插入排序是一种将指定元素与某个有序区域元素比拟并替换地位的排序算法。

咱们先简略举个例子,假如当初有这样一个无序数组

首先,咱们把索引为0的元素看作区域,该区域是有序的,因为就只有一个元素,怎么排序都是它一个元素,所以就认为它是有序的。

而后咱们取出有序区域左边的第一个元素,即索引为1的元素 67,存到变量 temp 中。而后从有序区域的最左边开始,将元素顺次与变量 temp 中的元素 67 比拟,若大于67,则将地位向右挪动一格;若小于67,则不须要持续遍历了,因为该区域是有序的。

上代码:

function insertSort(arr){  let length = arr.length;  for(let i=1; i<length; i++) {    let temp = arr[i];    let j = i;    while(arr[j-1] > temp && j>0) {      arr[j] = arr[j-1];      j--;    }    // 将temp插入到适合的地位    arr[j] = temp;  }  return arr;}console.log(insertSort([46,32,38,22,44,16]));VM77562:15 (6) [16, 22, 32, 38, 44, 46]