算法笔记系列:插入排序
插入排序
实现原理:通过遍历比较相应数据来构建有序序列,对于其中未排序的元素,将会被从后至前地与已排序列表中的元素进行依次比较并移动,当找到相应目标位置后被插入。以此类推,直到所有元素均排序完毕。
实现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;
}
}