3分钟看懂排序【插入排序】

1,884 阅读1分钟

前言

大家好,我是cv竹叶,为了自己不再对排序懵逼,所以我要3分钟让我自己懂得排序:插入排序

image.png

插入排序

插入排序描述: 顾名思义,就是从数组中抽出一个数,在已经排序的数组序列中从后向前扫描,然后插入到相应的位置。

  1. 从数组的第一个值开始,第一个数值,也就是下标为0的,可以认为已经被排序了
  2. 然后,取出下一个数组值,在已经排序数组序列中,从后向前扫描判断
  3. 如果,该数值大于数组中扫描到的新数值,那么将该数值移到下一位置
  4. 一直重复步骤 3,直到找到已排序的数值小于或者等于新数组的位置
  5. 将新数值插入到该位置后
  6. 重复步骤 2~5

还是不明白?上演示图:

da44baba996d9c4e8ddeb43a01c2139d.gif

代码实现:

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分钟啦。如果你觉得本文章对我有一点点帮助的话,请点个赞吧。