其他分享
首页 > 其他分享> > 插入排序

插入排序

作者:互联网

/**
 * @function 插入排序
 * @desc 第一个元素默认是已排序元素,取出下一个元素和当前元素比较,如果当前元素大就交换位置。那么此时第一个元素就是当前的最小数,所以下次取出操作从第三个元素开始,向前对比,重复之前的操作。
 * 概括:把前面的元素当成一个数组,以第一个为基准开始排序,每次排序都是往前面的数组中插入一个新元素
 * 时间复杂度:1 + 2 + 3 + 4 + ... + n = n(n+1)/2  =>  O(n*n)
 * @param {原数组} arr 
 * @returns 处理过后的原数组
 */
function insertion (arr) {
  if (!Array.isArray(arr)) {
    return []
  }

  for (let i = 1; i < arr.length; i++) {
    for (let j = i - 1; j >= 0; j--) {
      if (arr[j] > arr[j + 1]) {
        // 借助中间变量,交换位置
        let temp = arr[j]
        arr[j] = arr[j + 1]
        arr[j + 1] = temp
      }
    }
  }

  return arr
}

console.log(insertion([8, 1, 3, 2, 9, 5, 4, 0]))

标签:arr,insertion,插入排序,元素,let,数组,排序
来源: https://www.cnblogs.com/chinesedon/p/15226116.html