直接插入排序
排序思想:将一个数据集和看作一个无序区间和一个有序区间。每次从无序区间取出第一个值,插入到有序区间的确定位置 直到无序区间为空。
注意:初始状态,将待排序区间的第一个元素作为有序空间,剩下的作为无序区间
时间复杂度:O(N^2),稳定
代码实现:
void insert_sort(int *array, int length)
{
int value = 0;
int i = 0;
int j = 0;
for(i = 1; i < length; ++i){ //把每个无序序列元素添加到已序序列的合适位置
value = array[i];
for(j = i - 1; j >= 0 && array[j] > value; j--){ //在已序序列中,把比待插入元素大的序列向后移动
array[j + 1] = array[j];
}
array[j + 1] = value; //将无序元素在此位置插入
}
}