插入排序适用于少量元素的排序,时间复杂度为O(n^2),插入排序的中心思想是:从序列的第二个数开始遍历。当前数为a[i]。将这个数a[i]与前面已排好序的a[0]~a[i-1]进行反向遍历比较,将其插入到满足a[0]~a[i]有序的位置。
代码如下:
void InsertSort(int * a, int len){
for (int i=1; i < len; i++){
int key=a[i];
//insert a[i] into the sorted sequence a[0]~a[i-1]
int j=i-1;
while (j>=0 && a[j]>key){
a[j+1] = a[j];
j--;
}
a[j+1]=key;
}
}