例如:0,3,6,2.
外层指定到2了,记录2到临时变量存储
排序处理;移动j,j–
6 > 2: —> 0,3,6,6
3 > 2:—> 0,3,3,6
0 < 2:—> (不移动,j = 0) 0, 3,3,6
需要将2放到下标为1的为位置
所以arr[j+1] = 2.
插入排序:
内层循环完成局部排序;外层循环推进排序的进程
如:
外层:下标1 ; 下标2 ;累加。。。
内层:排序下标0,1; 排序下标0,1,2 ;累加。。。
void insertsort()
{
int arr[10] = {6,3,0,2,7,5,4,9,1,8};
int i;
int j;
for (i = 1;i < len;i++)
{
//外层循环:指定排序范围如;下标1
int tmp = arr[i];
//内层循环:当arr[j] > tmp,将指定的数据往后移,最后将tmp的数据放在正确的位置处。
for (j = i - 1;j >= 0 && arr[j] > tmp;j--)
{
arr[j + 1] = arr[j];
}
arr[j + 1] = tmp;
}
}