ソートアルゴリズムのフロントエンドは知っている必要があります

今日では、次のようにソートの良い学習アルゴリズムは、いくつかの結論は統合と考えることができます。

最初のソートアルゴリズムには良くも悪くも異なるシナリオ、異なるソートアルゴリズムの効率ではありません。

1.並べ替えを選択し(選択ソート):

ソートは、第1の領域の間隔の最小値に揃えることができます

例えば:配列[5、1、3、2、4、6]

ステップ1:アレイの最小値を選択するが、一般に、5の値に設定されています

ステップ2:基本となる値の値であり、以下の値は、交換価値で、そうでない場合はそのまま小さい場合には、

ステップ3:サイクル次のエリア。

  例:[5、1、3、2、4、6]デフォルトの最小値は5であり、その後の1と交換可能である、最小面積。[1、5、3、2、4、6]

     [1、5、3、2、4、6]次の区間[5、3、2、4、6] 5デフォルトの最小値、およびそれに続く2と交換可能である最小の領域を識別するために、[2、3は、5、4、6]

     [2、3、5、4、6]次の区間[3、5、4、6]デフォルト最小3、最小値、すなわち交換機4と、その後のゾーンを識別するために、彼は小さな[3を変化させませんでした、5、4、6]など、後続に

// 逆配列値
関数スワップ(ARR、I1、I2){
     VARの TEMP = ARR [I1]; 
    ARR [I1] = ARR [I2]; 
    ARR [I2] = TEMP; 
} 
/ * * 
 *選択ソート
 * @param ARR} * { 
 * / 
機能選択ソート(ARR){
     ためvarが I = 0、I <arr.length - 1; I ++ ){
         // その最小値を記録し、続いている場合よりも小さいが、彼の位置変化する
        VARを =分ARR [I];
         VARの指数= I;
         のためのVAR J = I + 1、J <arr.length - 1;。。J ++ ){
            もし(ARR [J] < 分){  = ARR [J]。
                インデックス = J; 
            } 
        } 
        スワップ(ARR、I、インデックス)
    } 
}
 ARR = [5、1、3、2、4、6でした。
  選択ソート(ARR)。
  console.log(ARR)
 

2.バブルソート(バブルソート):

バブルソート、ソート順序の最大面積の領域の最後のビットが、特定の方法であってもよいです。

  1. 前者が後者の交換よりも大きい場合、第1および第2のビット2とを比較します
  2. ビット2及び3の比較、前者が後者の交換よりも大きい場合
  3. だから、上の領域の最後の2との比較まで
  4. シーケンスが順序を完了するまでのプロセスを繰り返します

例:[5、1、3、2、4、6] 

  第一:[1、5、3、2、4、6]

  第二:[1、3、5、2、4、6] 

  第三:[1、3、2、5、4、6] 

  第四:[1、3、2、4、5、6]など

/ * * 
 *バブルソート
 * @param {} ARR 
 * / 
機能バブルソート(ARR){
     ためVAR I = 0、I <arr.length - 1; I ++){ // サイクル数回
        ためVAR J 0 =; J <arr.length - 1 - I; J ++。){
             // 時間arr.lengthバブリングを通過する必要があります1。
            // I:0サイクル:〜0。1-I-arr.length 
            // I :. 1サイクル:〜0.1-I-arr.length 
            // I:2サイクル:arr.length-0 1〜I- 
            IF(ARR [J]> ARR [J + 1 ]){ 
                スワップ(ARR、J、J + 1 ); 
            } 
        } 
    } 
} 
VARARR = [5、1、3、2、4、6 ]。
バブルソート(ARR)。
console.log(ARR)

3.挿入ソート(挿入ソート):

シーケンスについて行うには2つの部分、一部が発注される、不規則部分に分割されたデータを連続的に無秩序部分から採取される、ソート全体が完了するまで、順序付けられた部分に付加されます

原理:配列[5、7、2、3、6]

  1. 無秩序と配列の配列に命じた(5)(7236)
  2. 順序付けられたシーケンスの拡張を続行(57)(236)
  3. (257)(36)順序付けられたシーケンスの展開を続行
  4. (6)(2357)の順序付けられたシーケンスの展開を続行
  5. (23567)の順序付けられたシーケンスの展開を続行
  6. ソート完了

書かれたプログラム:

[5、1、3、2、4、6 、次に]、最初の到着後の値を保存する、(5,1,3)の順序付けられたシーケンスを仮定[I] = 2 TEMPに、TEMP、および持っています値シーケンステーブル比較の最後のビットの前に、
それは、1の前の最後の一つであり、このときの少ない温度より、温度が最後の上に配置されるので、最終的に順序付けられたリスト内の元の値、 (5,1,2,3)となり、サイクル缶
/ * * 
 *挿入配列
 * * @param {} ARR 
 * / 
関数挿入ソート(ARR){
     ためVAR I = 1; I <arr.length I ++ ){
         IF(ARR [I] <ARR [I - 1] ){ // 前者がビットよりも大きい場合、
            // i番目のビットの値は、キュー正しい位置順序付けの前に添加される
            VaRの TEMP = ; ARR [I]
             のためのVAR J> = 0; J = IをJ - ){
                 IF(J> 0 && ARR [J - 1]> TEMP){ 
                    ARR [J] = ARR [J - 1]; // 最後の順序付けられたリストの前であれば、一時よりも大きい、それを最後のセットは、かつてのリストを命じました。
                }
                他に { // 最後のリストは以下の一時以上である前に注文した場合、それは最後に設定された温度になります。
                    ARR [J] = TEMP;
                     BREAK ; 
                } 
            } 
        } 
    } 
} 
VAR ARR = [5 ,. 3 ,. 1 ,. 6 ,. 7 ,. 4。]; 
挿入ソート(ARR)
はconsole.log(ARR)。

4.クイックソート(クイックソート):

参照番号として(そのようなシーケンスの最後のもののような)番号を選択し、全体は、数が他の部分よりも大きい数より1小さい二つの部分、に配列を命じ、その後、参照途中の数とは同じもの残りの配列を行いますソートが完了するまで

例えば:配列[5、7、2、3、6、4]

  1. (3、2)、4(7、6、5):4になるランキング、参照番号として選択
  2. (2、3)、4(7,6,5):3,2ため、得られたソートモードを使用し続けます
  3. (2、3)、4(5,6,7):7,6,5のために、得られたソートモードを使用し続けます
  4. ソート完了
機能クイック(ARR){
     / * * 
     * 
     * @param {*} ARR 
     * @param {*}スタートスタート添字
     * @param {*}上付きエンド終わり
     * / 
    機能_quickSort(ARR、開始、終了){
         IF([スタート]> [終了= ||スタート> arr.length - 1。)リターン;
         VARハイ=エンド、低=スタート; // 高い位置と設定
        VARキー= [高] ARRを; // 設定された基準値は、最後の1にある
        (低< 高){
             一方(低<高&& ARR [低] <=キー)低++; // 値が低い近い上部に、基準値よりも低い場合 
            ARR [高] = ARR [低]; //値が基準値よりも低い、高のビット値、低いなく近い上部に発見された場合
            、一方 high--(低<高&& ARR [高]> =キー); // ローは移動せず、高い場合基準値、高低近い、より大きい 
            ARR [低] = ARR [高]; // 基準値よりも高い場合にクローズ処理、低い値は近くに配置しました。
        } 
        ARR [低] =キー; // 高い位置がローに等しい、基準値に変換します。
        _quickSort(ARR、スタート、低- 1); // 環状高速ソート左に配列参照値 
        _quickSort(ARR ,. 1 +ハイ・エンド); // クイックの右側に配列基準値
    }    
    _quickSort(ARR、 0、ARR。 1長); 
} 
VARの ARR = [5 ,. 1 ,. 3,2 ,. 4 ,. 6。]; 
クイック(ARR)
はconsole.log(ARR)







おすすめ

転載: www.cnblogs.com/whaleAlice/p/11923321.html