基本思想
插入排序是将一组数字从第二个数开始,一直让该数字与前面的数依次进行比较(以从小到大排序为例),找到比它小的数,然后插入到该数的后面,一直循环直到遍历完整个数字串,就算完成了插入排序。
举例
下图为一组数字
排序过程如下
第二个数开始与前面的数依次进行对比,若前面的数比它大,则把它从数组中取出,把该数前面的数组依次向后移一位,直到找到该插入的位置,依次遍历整个数组
C语言实例
int insert_sort(int *data, int length) //data是要进行排序的数组,length是数组长度
{
int i = 0,j = 0;
for(i = 1;i < length;i ++) { //从第二个数开始向后遍历
if(data[i] < data[i-1]) { //与前一个数比较,如果小于前一个数,先保存起来等待找到合适位置
int temp = data[i];
//依次把前面的数向后移一位,直到找到比该数小的数
for(j = i - 1;j >= 0 && data[j] > temp; j --) {
data[j+1] = data[j];
}
data[j+1] =temp; //把保存的数插入到合适位置
}
}
return 0;
}
总结
插入排序就是把数组从头到尾的每一个数都插入到前面比它小的后面