クイックソート、選択ソート、バブルソート

ソートアルゴリズムの3種類の配列より順序で使用され、具体的に説明すると、様々な選別方法の違い

 クイックソート

[n]を使用してクイックソート方法ソート
から要素を選択するために、[n]を基準として、一般から選択される[0]、[0](最初のチーム)の低点を設定し、ハイポイント[N-1]〜 (尾)、
フォワード尾でスキャンを開始する開始、もし[高]> [0 ]、 [低]に割り当てられた高++、そうでない場合は[高]、即ち、[低]を[高= ]
[低]が<0であれば、次に、前進1チームからスキャンを開始 ]、 低++、または[高]を[低= ]
このようにし、すべて[0]の要素への参照の数よりも少なくなります左側の[0]、[0]の要素よりも大きくなるように、右に[0]に配置されている
ソートファイナライズそれぞれと、左再帰、右サブアレイソート、

1  // クイックソート
2  静的 ボイドクイック(int型 ARR []、INT低、INT ハイ){
 3。     IF(低< 高){
 4。         INTの TEMP = ARR [低]; // TEMP比較のベースとなる
。5          しばらく(低< 高){
 6。             // 尾要素が前方に、以下の基準データより高いポインタの動きはない
7。             一方(低<&&高いARR [高]> = TEMP){
 8。                  high-- ;
 9              }
 10              / / ARR [低]に割り当てられ、この場合、ARR [高] <TEMP、ARR [高] 
。11             ARR [低] = ARR [高];
 12は             
13である             // 後方ローポインタ移動、キュー以上のヘッドよりや参照データエレメントに等しい
14を             一方(低<高&& ARR [低] <= TEMP){
 15                  低++ ;
 16              }
 17              // ARRに割り当てられ、この場合には、ARR [低]> TEMP、ARR [低] [高] 
18である              ARR [高] = ARR [低];
 19          }
 20          // 後ときにサイクル、低=高いですこの時点で高または低温度インデックスの正しい位置したとき、
 21          // この位置の値が低いTMPないが、それが割り当て一時ARRに必要である[低] 
22は、          ARR [低] = 温度;
 23は、         INTインデックス=低いです; //戻り値インデックス位置の一時
 24          
25          // 再帰呼び出し、インデックスサブアレイの位置を横切って継続は、上記の方法のフローに従ってソートされ
26で          クイックソート(ARR、0、index- 1。);
 27          クイック(ARR ,. 1 +指数、高)。
 28      }
 29  }
 30  
31である // 、バブルソート大小規模
32  @Test
 33は、 公共 ボイドバブルソート(){
 34は、      スキャナSC = 新しい新しいスキャナ(System.in);
 35      int型TEMP、ARR []は、
 36      ながら(SC。 hasNext()){ // サイクル試験を経て
 37          // 入力配列の長さおよび配列、例えば:キャリッジ5を入力し、13426を入力し
38は、         INT N- = sc.nextInt();
 39          ARR = 新しい新しい INT [N-];
 40          INT I = 0;私は<N-; I ++ ){
 41は              ARR [I] = sc.nextInt();
 42である         }
 43れます         / / 前の交換位置より大きいアレイの隣接する2つの比較数、
 44          @ ソートバブル一最大数(右端)の各々を順次発生、多数のビュー... 
45          のためにINT I = 0; I <-N- 1; I ++ ){
 46である             ためINT = 0 J; J <1-N - I; J ++ ){
 47                  IF(ARR [J]> ARR [J + 1 ]){
 48                     = TEMPのARR [J];
 49                      ARR [J] = ARR [J + 1 ];
 50                      [J + 1] ARR = TEMP;
 51である                 }
 52れる             }                
 53である         }
 54れる         // ソート
55の         ためのINT I = 0、I <N-; I ++は){
 56が              System.out.print(ARR [I] + ""の);
 57れる         }
 58      }
 59  }
 60  
61である // 大に小さい、選択ソート
62はある @Test
 63であり、 公共 ボイドSelectSort(){
 64      スキャナSC = 新しい新しいスキャナ(System.in);
 65      int型TEMP、ARR []は、
 66      ながら(sc.hasNext()){ // サイクル試験により
67          INT N- = sc.nextInt()。                
 68          ARR = 新しい新しい INT [N-];
 69          INT I = 0、I <N - 、I ++ ){
 70              ARR [I] = sc.nextInt();
 71である         }
 72          // その後部と各番号の順次アレイ後者よりも前者の場合、数を比較すると、交換の両方の位置
73である         ためINT I = 0; I <-N- 1; I ++){
 74              のためのint型 J <N; J ++ J = I + 1 ){
 75                  であれば(ARR [I]> ARR [J]){
 76                      TEMP = ARR [I]。
77                      ARR [I] = ARR [J]。
78                      ARR [J] = TEMP。
79                  }
 80              }                
 81          }
 82          // 排序后
83          のためにINT iが= 0、I <N; I ++ ){
 84              System.out.print(ARR [I] +」 " )。
85          }
 86     }
 87 }

さらに、バブルソートと選択ソートと同様の、時間の複雑さは同じです。

ここでは様々なソートアルゴリズムの比較の複雑さは、次のとおりです。

不足が指摘している場合、これらは、3を説明するの一種です!

します。https://blog.csdn.net/nrsc272420199/article/details/82587933クイックソートを参照することができます

おすすめ

転載: www.cnblogs.com/superwei001/p/12038736.html
おすすめ