説明
これを書くのは主に自分を鍛えるためであり、実質的な意味はありません。
各ブラウザ テストから取得されるデータは異なります。たとえば、テストには chrome を使用しましたが、一般にクイック ソートが最も高速ですが、IE では配列の長さに応じて Hill が最も高速になる可能性があります。
バブルソートのテストに大量のデータを使用しないでください (ブラウザがクラッシュしても構いません)
興味がある場合は、
テストページをダウンロードしてください 個人的な理解
バブルソート: 最もシンプルで遅い、長さが 7 未満の場合に最適のようです
挿入ソート: バブルより速く、クイックソートやヒルより遅いソート、小さいデータには利点があります
クイック ソート: これは、クイック ソートと挿入ソートの組み合わせを使用する非常に高速なソート方法です
ヒル ソート: 非クロムで配列の長さが 1000 未満の場合。 、ヒルソートはクイックよりも高速です
システムメソッド: forfox のシステムのこのメソッドは非常に高速です
アルゴリズムソースコード
// ---------- いくつかの並べ替えアルゴリズム
// jsソートにはソートを使用します
systemSort:function(array) {
return array.sort(function(a, b){
return a - b;
}); >// バブルソート
bubbleSort:function(array){
var i = 0, len = array.length,
j, d;
for(; ifor(j=0; jif(配列[i] < 配列[j]){
d = 配列[j]
配列[j] = array[i];
array[i] = d;
}
}
}
return array;
},
// クイックソート
quickSort: function(array){
//var 配列 = [8,4,6,2,7,9,3,5,74,5]; 44,4,324,5,65,6,6, 34,4,5,6,2,43,5,6,62,43,5,1,4,51,56,76,7,7,2, 1,45,4,6,7];
var i = 0;
var j = array.length - 1;
var ソート = function(i, j){
// 終了条件
if(i == j ){ return };
var key = array[i];
var stepi = i; // 記録開始位置
var stepj = j;終了位置
while(j > i) {
// j <<-------------- 前方検索
if(array[j] > = key){
j--;
}else{
array[i] = array[j]
//i ------------>> ;後ろ向きに見てください
while(j > ; i){
if(array[i] > key){
array[j] = array[i]
}
}
}
}
// 最初に取り出したキーが最小の数値の場合
if(stepi == i){
Sort( i, stepj); >return ;
}
// 最後のスペースはキー用に予約されています
array[i] = key;
// 再帰的
Sort(stepi, i); j, stepj);
}
return array;
},
// 挿入ソート
insertSort:function(array){
// http://baike.baidu. com/image/d57e99942da24e5dd21b7080
// http://baike.baidu.com/view/396887.htm
//var array = [0,1,2, 44,4,324,5,65,6,6,34,4,5,6,2,43,5,6,62,43,5,1,4,51,56,76,7,7,2, 1,45,4,6,7] ;
var i = 1, j, step, key,
len = array.length
for(; i ステップ = j = i;
キー = 配列[j];
while(--j > -1){
if(配列[j] > キー){
配列[ j 1] = 配列[j];else{
ブレーク;
}
}
配列[j 1] = キー;
配列を返します。 🎜>},
// ソートを希望します
//Jun.array.shellSort(Jun.array.df(10000));
shellSort:function(array){
// http:/ /zh.wikipedia.org/zh/ ヒルソート
// var array = [13,14,94,33,82,25,59,94,65,23,45,27,73,25,39, 10];
var stepArr = [1750, 701, 301, 132, 57, 23, 10, 4, 1] // reverse() ウィキでこの最適なステップ サイズの小さい配列を参照してください
//var stepArr = [1031612713 , 217378076, 45806244, 9651787, 2034035, 428481, 90358, 19001, 4025, 836, 182, 34, 9, 1]//大きな配列のステップ選択
var i = 0 ;
変数stepArrLeng th = stepArr.length;
var len = array.length;
for(;i < stepArrLength; i ){
if(stepArr) [i] > len2){
Continue;
}
stepSort(stepArr[i]);
}
// 1 ステップで並べ替えます
function stepSort(step);
//console.log(step) 使用されるステップ統計
var i = 0, j = 0, f, tem, key;
var stepLen = len%step > ) 1: len/step;
for(;i < step; i ){// 列をループします
for(j=1;/*j < stepLen && */step * j i < len; j ){//各列の各行を順番にループします。
key = array[f]; ) >= 0){// 順番に上方向に検索
if(array[tem] > key){
array[tem step] = array[tem]}else{
ブレーク;
}
}
配列[項目ステップ] = キー;
}
}
}
配列を返します。 🎜>
テストコードパッケージのダウンロード