插入排序的基本工作原理:对于未排序列,在已排序列中从后向前扫描,找到相应的位置并插入。其中时间复杂度O(n^2),空间复杂度O(1),算法相对稳定。
1 function insertionSort(arr) {
2 var length = arr.length;
3 for (var i = 0; i < length; i++) {
4 var preIndex = i - 1;
5 var cur = arr[i];
6 while (preIndex>=0&&arr[preIndex]>cur) {
7 arr[preIndex + 1] = arr[preIndex];
8 preIndex--;
9 }
10 arr[preIndex+1] = cur;
11 }
12 return arr;
13 }
14 console.log(insertionSort([3,1,7,45,3,2]));