介绍
直接插入排序,属于插入排序的一种,时间复杂度为O(n^2),空间复杂度为O(1),具有稳定性。
思想
直接插入排序,把第一个数看作是有序序列,从第二个数开始,把它插入到有序序列的合适位置,然后有序序列长度加一,再往后循环,直至排序完成。每次要插入的数都要和前边的有序序列中的数进行比较以找到其合适位置。
实现
/**
* a[n];数组
*/
for(int i=1;i<n;i++){ //从第二个元素开始,把它插入到前边序列的合适位置中去,这里是从小到大排序
b=a[i]; //记录插入数的值
int j=i-1; //代表要与插入数进行比较的数的序号
while(j>=0&&b<a[j]){ //若前边相邻的数比插入数大,则把前边数后移一位,再继续往前看
a[j+1]=a[j];
j-=1;
}
a[j+1]=b; //找到了插入数的位置,进行插入
}