vlambda博客
学习文章列表

算法笔记系列:插入排序

插入排序

实现原理通过遍历比较相应数据来构建有序序列,对于其中未排序的元素,将会被从后至地与已排序列表中的元素进行依次比较并移动,当找到相应目标位置后被插入。以此类推,直到所有元素均排序完毕。

实现1

function insertionSort(arr) { for (var i = 0; i < arr.length; i++) { for (var j = i; j - 1 >= 0; j--) { if (arr[j] >= arr[j - 1]) { break; }
swap(arr, j, j - 1); } }}
function swap(arr, i, j) { var t = arr[i]; arr[i] = arr[j]; arr[j] = t;}

实现2

function insertionSort(arr) { for (var i = 0; i < arr.length; i++) { var curr = arr[i]; var j;
for (j = i; j - 1 >= 0 && curr < arr[j - 1]; j--) { arr[j] = arr[j - 1]; }
arr[j] = curr; }}

注:代码仅演示整体思路,有局限,具体细节可调整可优化。