高効率を達成するために、バブルソート

// 彼のバブルソート最も簡単な方法は、ダブルループを使用することで実現
するvar [10,2,5,7,8,10,10,20,10,18,20,89,6,7,52 = ARRを]
 // 外側のループは、我々は、各列をソートする必要があり、次いでソートする列の数はarr.lengthで、数ある- 1回
VARは、 I = 0; I <arr.length - 1; I ++ ){
     ためVAR J 0 =; J <arr.length - 1 -i; J ++ ){
         IF(ARR [J]> ARR [J + 1 ]){
             VARの TEMP = ARR [J]; 
            ARR [J] = ARR [J + 1 ] ; 
            ARR [J + +1] = TEMP 
        } 
    } 
} 
にconsole.log(ARR)
// 上記効率が比較的低く、基準、ソートの高効率の方法を実現するために再帰的に私達の考えバイナリ検索をすることができる
機能クイック(開始、終了){
     IF(スタート> = 終了){
         リターン
    } 
    // バイナリ検索署名
    VARを =ピボットARR [スタート];
     varが =左スタート、
     VaRの右= 終了;
     // 周りにループ我々は位置が左右の重複しない交換場合見つける
    しばらく(=左!{右)
         // フラグが右そうよりも小さい場合、サイクルそして、現在の停止位置を記録
        しながら(右>左&& ARRは、[右]> = ピボット){  - 
        } 
        // サイクルが左大きい比フラグ場合に停止され、現在の位置を記録
        しながら、(左<右&& ARR [左] <= ピボット){  ++ 
        } 
        // -switched位置
        IF(左< 右){
         VARの TEMP = ARR [左] 
        ARR [左] = ARR [右] 
        ARR [右] = TEMP 
        } 

    } 
    // 中間位置に配置され、我々は右=左旋回する場合 
        ARR [スタート] = ARR [左]; 
        ARR [左] = ピボット; 
        クイック(左スタート、 - 1。 )、
        クイックソート(右。+ 1 エンド); 

} 

クイック(0、arr.length - 1 
にconsole.log(ARR)

 

おすすめ

転載: www.cnblogs.com/tengx/p/11904759.html