插入排序
作者:互联网
/**
* @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