插入排序

来源:互联网 发布:正交矩阵的性质 编辑:程序博客网 时间:2024/06/04 19:14

《算法竞赛宝典》

把预插入的数与数组中的各个数逐个比较,当找到第一个比插入数大的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个位置。

初始键值序列    【12】     15     9     20     6     31     24

第一趟排序:    【12】     15】 9     20     6     31     24

第二趟排序:    【9       12     15】   20     6     31     24

第三趟排序:    【9       12     15   20】     6     31     24

第四趟排序:    【6        9       12     15   20】  31     24

第五趟排序:    【6        9       12     15    20    31】  24

第六趟排序:    【6        9       12     15    20    24      31】



#include<cstdio>#define N 10000int a[N+1];void sort(int n){int i,j,temp;for(i=2;i<=n;i++){temp=a[i];//temp为要插入的元素 j=i-1;while(j>=1&&temp<a[j])//从a[i-1]开始向前找比a[i]小的数 {a[j+1]=a[j];//同时把数组元素向后移 --j;}a[++j]=temp;//插入 }} int main(){int i,n;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d",&a[i]);}sort(n);for(i=1;i<=n;i++){printf("%d ",a[i]);}} 




0 0