|
|
@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
//插入排序
|
|
|
|
|
|
|
|
void insert_sort(int a[] , int l , int r ){
|
|
|
|
|
|
|
|
for (int i = l + 1 ; i <= r ; i ++){
|
|
|
|
|
|
|
|
//找到合适的位置
|
|
|
|
|
|
|
|
int j , t = a[i];
|
|
|
|
|
|
|
|
for (j = i ; j && a[j - 1] > t ; j --) a[j] = a[j - 1];
|
|
|
|
|
|
|
|
//插入到合适的位置
|
|
|
|
|
|
|
|
a[j] = t;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//复杂度说明:当最好情况,需要进行n-1次比较,且每次都是a[i]>a[i+1],每一栋记录,时间复杂度为O(n).最坏情况下,需要比较(n+2)(n-1)/ 2 次。移动(n+4)(n-1)/2次。如果排序记录是随机的,根据概率相同的的原则,平均比较移动次数为n^2/4, 故直接插入排序算法时间复杂度为O(n^2)
|