説明する 各ブラウザテストから取得されるデータは異なります。たとえば、Chrome を使用してテストする場合、通常はクイック ソートが最も高速ですが、配列の長さによっては IE でシェル ソートが最も高速になる場合があります。 バブルソートをテストするためにあまり多くのデータを使用しないこと(ブラウザがクラッシュしてもかまいません) 個人的な理解 バブルソート: 最も単純で最も遅い。長さは 7 未満であると思われる*** 挿入ソート: バブルソートより高速、クイックソートやシェルソートより低速、小さいデータに有利 クイック ソート: これは非常に高速なソート方法です。V8 のソート方法では、クイック ソートと挿入ソートを組み合わせて使用します。 シェルソート: Chrome以外では配列の長さが1000未満の場合、シェルソートはクイックソートよりも高速です。 · システム方式: この方法はForfoxでは非常に高速です
- // ---------- いくつかのソートアルゴリズム
- // jsはソートにsortを使用します
- システムソート:関数(配列){
- 配列を返します。sort(function(a, b){
- a - b を返します。
- });
- },
- // バブルソート
- バブルソート:関数(配列){
- var i = 0 、 len =配列の長さ、
- j、d;
- for(; i < len ; i++){
- ( j = 0 ; j < len ; j++){
- if(配列[i] < 配列[j]){
- d =配列[j];
- 配列[j] = 配列[i];
- 配列[i] = d;
- }
- }
- }
- 配列を返します。
- },
- // クイックソート
- クイックソート:関数(配列){
- //var配列= [8,4,6,2,7,9,3,5,74,5];
- //var配列=
[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 = 0 ;
- var j =配列の長さ- 1;
- varソート=関数(i, j) {
-
- // 終了条件
- i == jの場合、戻り値:
-
- varキー=配列[i];
- var tempi = i; // 記録開始位置
- var tempj = j; // レコード終了位置
-
- while(j > i){
- // j << --------------前方検索
- if(配列[j] > = キー){
- j--;
- }それ以外{
- 配列[i] = 配列[j]
- //i++ ------------- > >後方検索
- while(j > ++i){
- if(配列[i] >キー){
- 配列[j] = 配列[i];
- 壊す;
- }
- }
- }
- }
-
- // 最初に取り出したキーが最小の数字の場合
- if( tempi == i){
- ソート(++i, tempj);
- 戻る ;
- }
-
- //***キー用に1つの空きスペースが予約されています
- 配列[i] = キー;
-
- // 再帰
- ソート(tempi, i);
- ソート(j, tempj);
- }
-
- ソート(i, j);
-
- 配列を返します。
- },
-
- // 挿入ソート
- 挿入ソート:関数(配列){
-
- // http://baike.baidu.com/image/d57e99942da24e5dd21b7080
- // http://baike.baidu.com/view/396887.htm
- //var配列=
[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, temp, キー,
- len =配列の長さ;
-
- (; i < len ; i++){
-
- 温度= j = i;
- キー=配列[j];
-
- while(--j > -1){
- if(配列[j] >キー){
- 配列[j+1] = 配列[j];
- }それ以外{
- 壊す;
- }
- }
-
- 配列[j+1] = キー;
- }
-
- 配列を返します。
- },
-
- // シェルソート
- //Jun.array.shellSort(Jun.array.df(10000));
- shellSort:関数(配列){
-
- // http://zh.wikipedia.org/zh/%E5%B8%8C%E5%B0%94%E6%8E%92%E5%BA%8F
- // var配列= [13,14,94,33,82,25,59,94,65,23,45,27,73,25,39,10];
-
- var tempArr = [1750, 701, 301, 132, 57, 23, 10, 4, 1];
- // 逆方向() Wikipediaの***ステップサイズを参照 配列が小さい
- //var tempArr = [1031612713, 217378076, 45806244,
- 9651787、2034035、428481、90358、19001、4025、836、182、34、9、1]
- //大きな配列のステップサイズの選択
- var i = 0 ;
- var tempArr tempArrLength = tempArr.length;
- var len =配列の長さ;
- var len2 = parseInt (len/2);
-
- for(;i < tempArrLength ; i++){
- if(tempArr[i] > len2){
- 続く;
- }
-
- tempSort(tempArr[i]);
- }
-
- // ステップをソートする
- 関数 tempSort(temp){
-
- //console.log(temp) 使用されたステップ統計
-
- var i = 0 、 j = 0 、 f、用語、キー;
- var tempLen = len %temp > 0 ? parseInt(len/temp) + 1 : len/temp;
-
-
- for(;i < temp ; i++){// 列を循環する
-
- ( j = 1 ;/*j < tempLen && */temp * j + i < len ; j++){
//各列の各行をループする - tem = f = temp * j + i;
- キー=配列[f];
-
- while(( tem- = temp ) > = 0){
- // 上方向に順番に検索
- if(配列[tem] >キー){
- 配列[tem+temp] = 配列[tem];
- }それ以外{
- 壊す;
- }
- }
-
- 配列[tem + temp] = キー;
-
- }
- }
-
- }
-
- 配列を返します。
-
- }
オリジナルリンク: http://www.cnblogs.com/idche/archive/2011/02/16/1956397.html 【編集者のおすすめ】 - 10 の素晴らしい HTML5 と JavaScript エフェクト
- JavaScript オブジェクトと継承のチュートリアル: 組み込みオブジェクト
- JavaScript メモリリサイクルメカニズムの詳細な解釈
- JavaScript初心者が注意すべき7つのポイント
- 私は10年間JavaScriptを書いてきましたが、連続代入演算を完全に理解していないかもしれません。
|