插入排序-直接插入排序
1 void InsertSort(int list[], int n)
2 {
3 int i,j,temp;
4 for (i=1; i<n; i++){
5 temp = list[i];
6 for(j = i; j >0 ; j--)
7 {
8 if(temp > list[j-1])
9 break;
10 else
11 list[j] = list[j-1];
12 }
13 list[j] = temp;
14 }
15 }
L4:先把第0个元素看成是一个有序子序列,从第1个序列起逐行向前插入。遍历数组中的每个元素(第0个元素除外),对元素进行下面操作
L5:list[0]是监视哨的位置,但是很多情况下数组都是从0开始的,所以用temp作为监视哨,但不是用于监视哨的“避免数组下标出界”的作用
L6-L12:从j-1起往前搜索,同时后移记录
n是数组元素的个数,时间复杂度:O(n^2)
稳定排序

浙公网安备 33010602011771号