插入排序每次排一个数组项,类似平时抓牌的模式,假设第一项已经是排好序的,接着第二项和第一项比较,如果第二项比第一项小,则第二项插入第一项,以此类推,选中接下来的数,和前面已经排好序的数进行比较,一旦找到一旦这个数比待比较的数小,则把这个数插入。
插入排序的代码实现:
function InsertSort() {
const array = [];
this.insert = function(item) {
array.push(item);
}
this.toString = function() {
return array.join();
}
this.insertSort = function() {
const length = array.length;
let temp,j;
for(let i=1; i<length; i++) { // 从1开始,假定第一个数已经排好序了
j = i;
temp = array[j];
while(j>0 && array[j-1] > temp) {
array[j] = array[j-1];
j--;
}
array[j] = temp;
}
}
}
var arr = new InsertSort();
arr.insert(3);
arr.insert(13);
arr.insert(32);
arr.insert(23);
arr.insert(11);
arr.insert(8);
arr.insert(33);
arr.insert(28);
console.log(arr.toString()); // 3,13,32,23,11,8,33,28
arr.insertSort();
console.log(arr.toString()); // 3,8,11,13,23,28,32,33