插入排序的C++实现

直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。

这个算法比较简单,不需要过多的解释,代码如下:

 1 /*

 2  * insert the value which is at the index index in data

 3  */

 4 void insert_sort(int *data, int index, int value)

 5 {

 6     int temp_index = index;

 7     for(int i = 0;i < index;++i)

 8     {

 9         //find the first value that bigger than the passed value

10         if(value < data[i])

11         {

12             temp_index = i;

13             break;

14         }

15     }

16 

17     int temp = index;

18     while(temp > temp_index)  //right shift one number from the temp_index

19         data[temp] = data[--temp];

20     data[temp_index] = value;

21 }

以下是测试:

 1 int main()

 2 {

 3 //    int data[] = {3,2,6,1,30,-3};

 4     int data[] = {5,4,3,2,1,0};

 5     int length = 6;

 6     for(int i = 1;i < length;++i)

 7         insert_sort(data,i,data[i]);

 8 

 9     for(int i = 0;i < length;++i)

10         cout << data[i] << "  ";

11     cout << endl;

12     return 0;

13 }

结果如下:

插入排序的C++实现

你可能感兴趣的:(插入排序)