10の古典のクイックソートソートアルゴリズム

10の古典のクイックソートソートアルゴリズム

彼らはそれがレビュー、レビューされたときに、今日我々は、高速ソートアルゴリズムについて何かを言っているか、C言語、実現するための空き時間を見つけるように、これらの日は突然、トップ10の古典的なソートアルゴリズムを振り返ったいです

      ソートアルゴリズムテン古典的な速いソートアルゴリズムは、その主要なアイデアの一つである数字のセットを注文しないことです、参照番号として番号に最初に行くための数字のこの最初のセットでは、一般的には数字のこのセットを使用する最初のだろう最後の番号または参照番号として番号。ここでは、参照番号としてこの番号の最初のデータセットを選択します。2つのカーソルを設定し、我々は、我々はデータセットの最後の数字の後にカーソルをポイントすると、カーソルの前に最初の番号を指しています。基準デジタル数字よりも小さい、我々は増分(プラスワン、または後方に移動するプレカーソル)の前に、デジタルスイッチングプリカーソルと点の数、カーソルなり見つけたときに、カーソルから左。その後、我々は見つけるために、以前のカーソルを右を開始した参照番号より大きな番号を見つけたときに、我々は図番号を交換すると、カーソルが現在指しています。次いで、マイナスからカーソル(マイナス1は、または前方いずれかをカーソルを移動した後)。次いで、カーソルは前のカーソル、ソートの終わりに等しくなるまで上記のステップを繰り返す場合。
      しかし、完了したデータの並べ替えのセットを完了するためにように上記ソート処理、左のベンチマーク図より、基準のほんの数は、右側に基づい桁に、ベースラインの数値よりも大きいことに留意すべきです。我々もさらにソート、実際には、我々は、アレイの一番上になりますする必要がベンチマーク数値より1小さい二つの部分に分割され、一部が参照番号よりも大きいので、我々はちょうどこれら二つの部分をソートするために、再び続いする必要がありますライン上で、左側の部分が最終的に分割され続けることができないまで、再び2つの部分に分割され、その後、ソートは完了です。次のように一部の学生はまだ理解していない可能性、と言ったので、私たちは、理解するために私たちを支援するための簡単な図を描きます:

1  / * 
2     古典的なスケジューリングアルゴリズム:クイックソートアルゴリズムを達成するためにC言語
 。3  * /  
4の#include <stdio.hの>
 5の#include <STDLIB.Hが>
 6  // 関数ディスプレイアレイ素子
。7  ボイドディスプレイ(INT A [] 、INT LEN){
 8      INT I = 0 ;
 9      ながら(私は< LEN){
 10          のprintf(" %のD "、A [I ++は]); 
 11      }
 12である      のprintf(" \ N- " );
 13である }
 14  
15 // 2つの数のスワップ機能
16  ボイドスワップ(INT *まず、INT * 秒){
 17。     INTのTEMPを、
 18である      TEMP = * まず、
 19      * * =最初SECOND;
 20      * SECOND = TEMP;
 21である }
 22である 
23れる // 基準素子よりも大きい二つの部分に分けアレイ素子および参照素子未満である
24  INT(並べ替えをint []、int型スタート、INT {エンド)
 25       INT標準= [スタート];
 26である      INTロー= スタート;
 27      int型高= 終了。
28       一方(低< 高){
 29           、一方(低<高&& [高]> = 標準){
 30               high-- 31           }
 32           
33           であれば(ロー< ハイ){
 34               スワップ(&[低]、および[高])。
35               低++ ;
36           }
 37           
38           ながら(= <低<高&& [低] 標準){
 39               ++低いです40           }
 41           
42           であれば低いです(<高い){
 43               スワップ(&[低]、および[高])。
44               high-- 45           }
 46       }
 47      [低] = 標準; 
48      リターンが低いです。 
49  }
 50  
51  // 快速排序函数
52  空隙クイック(INT []、int型開始、INT {端)
 53      であれば(開始< エンド){
 54台の         int型の POS = ソート(開始、終了)。
55          クイックソート(開始、POS- 1)。// 再帰呼び出し
56は、          クイックソート(A、+ POS 1、エンド); // 再帰呼び出し
57れる     }
 58  }
 59  INTメイン(ボイド){
 60      INT LEN = 0 ;
 61は、     INT * P;
 62である     int型I;
 63である      のprintf(" してくださいソートされた入力配列の長さ:\ N- " );
 64      scanfの(" %のD "、&LEN);
 65      GETCHAR(); // 改行文字入力ストリームを歩く読み出さ
66      P =(INTを*)はmallocはsizeofint型)* LEN);
 67      のprintf(" 数値を入力します注文:\ N- " );
 68      のための(I = 0 ;私はLEN <;私は++ ){
 69          scanfの(" %のD "、&にP [I]);
 70      }
 71である      のprintf(" 事前ソートされた配列:\ N- " );
 72      ディスプレイ(P、LEN);
 73は      クイックソート(P、0、lenの1。;)
 74      のprintf(" ソートされた配列:N- \ ");
 75      ディスプレイ(P、LEN);
 76      無料(P); // メモリ解放
77      リターン 0 ;
 78 }

 

 

      コード上の単純な導入は、表示機能の正式なパラメータは、整数の2つの配列であり、配列の長さであり、この関数の機能は、出力にコンソールへの配列の要素です。為替スワップ機能は、2つの数の値の関数です。次いで、ソート機能は、2つの部分に分割された配列要素であり、一方の部分は、要素の基準部分よりも小さい場合、他の部分は、基準要素の部分よりも大きくなっています。クイックソート機能では、次に、セクタのインデックス、データの前部、次いでソート、データの一部再び最後までソートするために、我々は良好な基準要素が配置されている分裂指数を得るためにソート機能を呼び出します。
      結果は、コードの実行の下に与えられます。

おすすめ

転載: www.cnblogs.com/ybxfighting/p/11671449.html
おすすめ