插入排序-最基本的版本

插入排序的思想:
假设现在有一堆数据,需要排序,我们随便选取一个数据作为第一个元素。然后从剩下的数据里面选一个(称为key)和之前选的第一个元素做比较,按照要求(升序还是降序),把key和第一个元素排好序。这样,这2个元素就是排好序的了。现在从剩下的那一堆数据里面选一个作为新的key,再和之前已经排好序的元素,按照要求放到到合适的位置上。这样,这3个元素就是排好序的了。照此循环,把所有数据就排好序了。

参考代码:

 1 //arr:待排序的数组,length:待排序数组的长度
 2 void InsertSort(int arr[],int length)
 3 {
 4     int i,j;
 5     int key;    //待插入的数
 6     for(i = 1; i < length; ++i)
 7     {
 8         key = arr[i];
 9         j = i - 1;
10         
11         // 找到合适的位置,插入key 
12         // >:升序 <:降序
13         while(  (j >= 0)  && (arr[j] > key)   )
14         {
15             arr[j+1] = arr[j];
16             --j;
17         }
18         arr[j+1] = key;
19         
20     }
21 }

 

posted @ 2015-06-01 17:44  memorybuf  阅读(104)  评论(0编辑  收藏  举报