排序算法-插入排序

439 阅读1分钟

插入排序

对于少量元素的排序,是一个有效的算法。

基本思想:将一个数插入一个已经排好序的数据中。

  1. 第一次循环时,从第2个数开始处理。我们将第1个数作为已经排好序的数据:当第2个数 > 第1个数时,将第2个数放在第1个数后面一个位置;否则,将第2个数放在第1个数前面。此时,前两个数形成了一个有序的数据。
  2. 第二次循环时,我们处理第3个数。此时,前两个数形成了一个有序的数据:首先比较第3个数和第2个数,当第3个数 > 第2个数时,将第3个数放在第2个数后面一个位置并结束此次循环;否则,再和第1个数比较。如果第3个数 > 第1个数,则将第3个数插入第1个数和第2个数中间;否则,第3个数 < 第1个数,则将第3个数放在第1个数前面。此时,前三个数形成了一个有序的数据。
  3. 后续的数据同理处理,直至结束。
    const insertion_sort = (arr) => {
        if (!arr || arr.length <=1) {
            return arr
        }
        for(let i = 1; i < len; i++) {
            let key = arr[i]
            let j = i - 1
            while(j >= 0 && key < arr[j]) {
                arr[j+1] = arr[j]
                j = j -1
            }
            arr[j+1] = key
        }
        return arr
    }
每次循环输出
测试数据:[5,2,4,6,1,3]

[ 2, 5, 4, 6, 1, 3 ]
[ 2, 4, 5, 6, 1, 3 ]
[ 2, 4, 5, 6, 1, 3 ]
[ 1, 2, 4, 5, 6, 3 ]
[ 1, 2, 3, 4, 5, 6 ]