原理
1 元素依次比較大小, 按條件交換位置
2 交換過位置的元素, 往回與之前的元素比較大小, 找到插入的位置,直到不符合交換位置的條件.跳出迴圈
3 繼續外層迴圈
var arr = [ 0, 0, 1, 2, 3, 4, 5, 6, 12, 22, 123, 333, 333, 444, 555, 666, 777, 888, 999];
function instersort(arr)
return false;
}for(let i = 0; i < arrlenght; i++)
}console.log('swapall: ' + swapall);
console.log('forloop: ' + countall);
return arr;
}console.log(instersort(arr));
swapall: 169
forloop: 169
[ 999, 888, 777, 666, 555, 444, 333, 333, 123, 22, 12, 6, 5, 4, 3, 2, 1, 0, 0 ]
下面是簡潔版:
var arr = [0, 1, 2, 5, 10, 12, 22, 50, 91, 123, 300, 444, 500, 666, 999, 1000, 1010]
, count = 0;
function instersort(arr)
}return arr;
}console.time('s');
var re = instersort(arr);
console.timeend('s');
console.log(
re, count
);
s: 0.672ms
[ 1010, 1000, 999, 666, 500, 444, 300, 123, 91, 50, 22, 12, 10, 5, 2, 1, 0 ] 136
cpu i5-4590
十大經典排序演算法 插入排序
插入排序 insertion sort 的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。把n個待排序的元素看成為乙個有序表和乙個無序表。開始時有序表中只包含1個元素,無序表中包含有n 1個元素,排序過程中每次從無...
十大經典排序演算法系列 六 計數排序 js版
整數排序 0 99 最好的演算法 1 把排序元素的值 當 tmparr陣列的索引,計數出現次數,2 遍歷 tmparr,按照 value 值的個數,unshift push tmparr 索引值 到 newarr 完成排序 use strict var arr 0,0,1,2,3,4,5,10,12...
十大經典排序演算法
載自 排序演算法是 資料結構與演算法 中最基本的演算法之一。排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序演算法有 插入排序 希爾排序 選擇排序 氣泡排序 歸併排序 快速排...