之三 直接插入排序

直接插入排序的思想是,把数组分成两部分,前面的部分是已经排好序的,将待插入的数字,一个个对比之前排好的数列,找到合适的位置并插入其中,此位置之后的数字往后移一位。

如 数列 1,3,4,5,6, 要将2插入到前面去,就是从6开始比对,6比2大,就比对前一位,直到找到比2小的那个位置。插入之后,后面所有数字向后移动一位。

 1 void sort(int arr[], int len)
 2 {
 3     
 4     for (int i = 1; i < len; ++i)    //从数列第一个开始插入,一共插入len-1次
 5     {
 6         int j;
 7         int temp = arr[i];    //待插入的数字 
 8         for (j = i; j > 0 && temp < arr[j-1]; --j)
 9             arr[j] = arr[j-1];    //向后移动一位    
10         arr[j] = temp;
11     }    
12 }

验证一下:

 1 int main(int argc, char *argv[])
 2 {
 3     int array[10] = {10,9,8,7,6,5,3,3,2,1};
 4     sort(array, 10);
 5     int k = 0;
 6     while (k <= 9)
 7     {
 8         cout << array[k] << " ";
 9         k++;    
10     }
11     system("PAUSE");
12     return EXIT_SUCCESS;
13 }

 

 

posted on 2012-11-17 14:22  乐则行之  阅读(65)  评论(0)    收藏  举报

导航