排序

前面复习总结了两种排序算法,分别是 选择排序和冒泡排序,可能是忘记保存了,现在这个博客上找不到了

这里重点将其思想分别介绍一下:

选择排序: 这个我目前最熟悉的 一种排序方法,例子:int a[] = {6,3,1,4,2,5,10,8,9,0};

                   第一次将首个数字逐个与后面的数字比较,选出最小/大的  

                   第二次将第二个数字逐个与后面的数字比较,选出第二小的

。。。。

冒泡排序:将相邻的数字一次比较,如,6和3比较,交换位置3,6,1,4,2.。。。

                  再将6和1比较, 得到3, 1, 6,4, 2.。。

                  6和4比较。。。最后一轮下来9排到最后

///依次比较相邻的两个数,按照从小到大或者从大到小的顺序进行交换。

 

简单插入排序:从整个待排序列中选出一个元素插入到已经有序的子序列中去,得到一个有序的、元素加一的子序列,

                         直到整个序列的待插入元素为0,则整个序列全部 有 序。

                         在实际的算法中我们经常选择序列的第一个元素作为有序序列(因为一个元素肯定是有序的),

                        我们逐渐将后面的元素插入到前面的有序序列中,直到整个序列有序。

//每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。

 #include <iostream>

using namespace std;
void swap(int& a, int& b)
{
   int temp;  
   temp = a;
   a = b;
   b = temp;
}

int main()
{
    int a[] = {6,3,1,4,2,5,10,8,9,0};
    int len = sizeof(a)/sizeof(a[0]); //10
    for(int i=1; i<=len; i++)
   {
       for(int j=0; j<=len -1; j++)//loop all elements before i
      {
         if(a[j]>a[i])
         swap(a[j],a[i]);
      }
   }
     for(int k =0; k<10; k++)
    {
       cout<<a[k]<<endl;
   }
    return 0;
}

 

posted on 2019-01-17 20:31  积跬步306  阅读(84)  评论(0编辑  收藏  举报