前言
大家好,我是cv竹叶,为了自己不再对排序懵逼,所以我要3分钟让我自己懂得排序:插入排序
插入排序
插入排序描述: 顾名思义,就是从数组中抽出一个数,在已经排序的数组序列中从后向前扫描,然后插入到相应的位置。
- 从数组的第一个值开始,第一个数值,也就是下标为0的,可以认为已经被排序了
- 然后,取出下一个数组值,在已经排序数组序列中,从后向前扫描判断
- 如果,该数值大于数组中扫描到的新数值,那么将该数值移到下一位置
- 一直重复步骤 3,直到找到已排序的数值小于或者等于新数组的位置
- 将新数值插入到该位置后
- 重复步骤 2~5
还是不明白?上演示图:
代码实现:
var arr = [5, 6, 3, 1, 8, 7, 2, 4];
function insertSort(arr) {
var tmp;
for (let i = 1; i < arr.length; i++) {
tmp = arr[i];
for (let j = i; j >= 0; j--) { //取当前的值,往左比较
if (arr[j - 1] > tmp) {
arr[j] = arr[j - 1];
} else {
arr[j] = tmp; //比当前值小就赋值到当前位置
break;
}
}
}
return arr;
}
insertSort(arr);
复制代码
时间复杂度:O(n^2)
结语
看到这里,刚好3分钟了,我也懂了吧?不懂的话,返回上一页,再进来,又是新的3分钟啦。如果你觉得本文章对我有一点点帮助的话,请点个赞吧。