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 7 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 }
>---仅供参考---<

浙公网安备 33010602011771号