复杂度为O(n2)
核心概念:分为 已排序数列和未排序数列,目的是将每一个未排序的数字逐一与已排序数列的最后一位比较,进行排序
例子 4 3 2 1
提前准备 4 | 3 2 1
把4作为已排序数列
3 2 1作为未排序数列
第一次 3 4 | 2 1 ///////////////3与4比较 3<4 4则往后移一位 把3放置第一位
第二次 2 3 4 | 1 ///////////////////2<4 4再往后移一位 2<3 3往后移一位 空出来的第一位由2补上
第三次 1 2 3 4 以此类推
核心代码
for(i=1;i<n;i++) //从数组下标1开始比较排列 比较N-1次
{
temp=number[i]; //逐一取出未排序数组中元素
ter=i-1;//已排序数组的最后一位数字的下标
while(ter>=0&&temp<number[ter]) //从后一一比较,若小于,较大的数则往后移一位
{
number[ter+1]=number[ter];
ter–;
}
number[ter+1]=temp; //插入数值