C语言之直接插入排序

一、直接插入排序

  直接插入排序就是对于给定的一组数,每次插入一个数来排序

  例如给定的数列 1 4 3 6 8 5 0 7 9而言,直接插入排序的过程如下:

    1、temp为第二个数4,对于前两个数,已经顺序,故第一次排序后仍为

        1 4 ^ 3 6 8 5 0 7 9

    2、temp为第三个数3,对于前三个数,3从后往前插到4前,故第二次后为

        1 3 4^ 6 8 5 0 7 9

    3、同理,第3次后为

        1 3 4 6^ 8 5 0 7 9

    4、   1 3 4 6 8^ 5 0 7 9

    5、   1 3 4 5 6 8^ 0 7 9

    6、   0 1 3 4 5 6 8^ 7 9

    7、   0 1 3 4 5 6 8^ 9

    8、   0 1 3 4 5 6 7 8 9^

 

  至此排序完成,下面给出代码:

 

 1 void InsertSort(int *a,int n)
 2 {
 3     int i,j;
 4     int temp;//用temp来记录每次要插入的数
 5     for (i=0;i<n-1 ;i++ )
 6     {
 7         temp=a[i+1];//temp从第二个数开始,逐级向后推
 8         j=i;//j也为临时变量来指示数组地址的位置
 9         while (j>-1&&a[j]>temp)//保证j不超出数组,a[j]>temp才需要排序
10         {
11             a[j+1]=a[j];//逐渐向前推进,直到temp位置
12             j--;
13         }
14         a[j+1]=temp;//完成一次插入
15     }
16 }

 

>---仅供参考---<

posted @ 2016-04-20 15:00  Rmfone  阅读(403)  评论(0)    收藏  举报