思想:给一组数组,当这个数组分为两个数组,一个有序,一个无序。从第二数开始,后面一整个数组都是无序的,每个都需要遍历一遍,将无序的数与前面有序的相比较,插到前面有序的数组中。
具体实现:
首先,循环从第二个数开始,遍历长度是整个数组。
要拿当前的数字 i 与前面一个数字进行比较,先把这个数字用一个临时变量存起来。
开始拿当前数字的前面的数字进行比较,从后往前开始比较遍历, j = i -1; 遍历的条件是 前面的数字的下标 要大于 0,防止越界,而且 当前数字要比前面的数字小才进行遍历,即 j>0 && temp < arr[j]
遍历过程中,条件成立,当前数字比前面的数字小,则把前面的数字往后挪,即把前面的数字赋给后面的数: arr[j+1] = arr[j];
直到遍历完成,需要把临时变量赋给当前不成立条件的数字的下一位数字。
代码:
网友评论