插入排序
算法原理 构建有序数列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法刚开始时,默认第一个元素有序。
void insertSort (int a[], int length){
if (length == 0)
return array;
for (int i=0;i<length-1;i++){
int current = a[i+1]; //0,1...i为已排序区
int index=i;
while(index>=0;current<a[index]){
a[index+1] = a[index]; //为当前元素留出位置
index--;
}
a[index+1] = current;
}
时间复杂度,最好情况下只需执行外层for循环,无需进入while循环,时间复杂度为O(n)。最坏情况下比较次数为(1+2+...+n-1),时间复杂度为O(n^2)