1 //直接插入排序:将一个记录插入已经排好序的有序表中,得到一个新的、记录数加1的有序表 2 void StraitInsertionSort(SqList *L) 3 { 4 int i, j; 5 for (i = 2; i <= L->length; ++i) 6 { 7 if (L->array[i] < L->array[i - 1]) 8 { 9 L->array[0] = L->array[i]; 10 for (j = i - 1; L->array[j] > L->array[0]; --j) 11 L->array[j + 1] = L->array[j]; 12 13 L->array[j + 1] = L->array[0]; 14 } 15 } 16 } 17 18 //复杂度分析: 19 //空间:只需要一个辅助空间 20 //时间:最好情况,比较 (L->array[i] < L->array[i - 1]) n-1 次,没有记录的移动,时间复杂度为 O(n) 21 // 最坏的情况,需要比较的次数 ((n+2)*(n-1)) / 2 次,需要移动记录的次数 ((n+1)*(n-1)) / 2 次,那么平均移动次数与平均比较次数为 n^2/4 ,时间复杂度为 O(n^2)
数据结构 --- 直接插入排序
猜你喜欢
转载自www.cnblogs.com/luguoshuai/p/9508462.html
今日推荐
周排行