插入排序
基本思想:每一步将一个待排序的数据插入到前面已经排好序的有序序列中,直到插完所有元素为止。
算法实现:直接插入排序是将无序序列中的数据插入到有序的序列中,在遍历无序序列时,首先拿无序序列中的首元素去与有序序列中的每一个元素比较并插入到合适的位置,一直到无序序列中的所有元素插完为止。
演示
分析
插入排序的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。拿在左手上的牌总是排序好的,原来这些牌是桌子上牌堆中顶部的牌
let arr = [4, 6, 11, 5, 2, 7];
/*插入排序*/
function insertionSort(array) {
for (var i = 1; i < array.length; i++) { //桌上的牌
var key = array[i]; //抓起来的牌
var j = i - 1; //手牌的下标
while (array[j] > key) {//把手牌比抓起来的的牌往前挪一个位置
array[j + 1] = array[j];
j--;
}
array[j + 1] = key; //在正确的位置放入抓起来的牌
}
return array;
}
console.log("最终输出" + insertionSort(arr));