原理
将未排序的数据插入到已排好数组的特定位置中。
代码
function insert(arr) {
for (let i = 0; i < arr.length; i++) {
int temp = arr[i];
int index = i - 1;
while(index > 0 && arr[index] > temp) {
arr[index+1] = arr[index];
index--;
}
arr[index+1] = temp;
}
return arr;
}
详细讲解
i=0:
- 没有已经确定的排序,故 5 为第一个已排好的数据。
i=1:
- 找到 12 ,与前一个数据进行比较,发现大于5,故不做操作、
- 12 已经与已排好的数组中做完比较,插入到已排好的数组中
i=2:
- 找到 8,与前一个数据进行比较,发现小于 12,12往后移
- 与前一个数据进行比较,发现大于 5,故不做操作
- 8 已经与已排好的数组中昨晚比较,插入到已排好的数组中
…
依此类推,直至比较完成,得到最后的排序。