简述
插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
算法思想
1、先拿到第一个元素,认为它是已排序的
2、拿到下一个元素a,与已排序序列从后往前相比
3、如果已排序序列中的元素大于a,则将它的位置往后移一位
4、重复2,3步骤,知道已排序序列中的元素小于等于a
5、将a插入到4布中元素后
图解
js实现
let arr = [5,3,7,2,6];
//插入排序
function insertSort(arr) {
for (let i = 1; i < arr.length; i++) {
//当前要处理的数
let temp = arr[i];
let j = i - 1;
while (j >= 0 && arr[j] > temp) {
//如果前一个数大于后一个数,将前一个数往后移一位
arr[j + 1] = arr[j]
j--
}
//此时的j是要处理的数排序后应该在的位置
arr[j+1] = temp
}
return arr;
}
console.log("插入排序arr", insertSort(arr))