1.いくつかの基本的な関数を定義します
1つの#include <iostreamの> 2 3 使用して 名前空間STDを、 4 5 ボイド _swap(INT&A、INT&B) 6 { 7 INTの TMP = B。 8 、B = 。 9 、A = TMP。 10 } 11 12 INT )(メイン 13 { 14 のint [] = { 1、5、3、6、9、4、2、8、7 }; 15 int型 N- = はsizeof(A)/ はsizeof([ 0 ]); 16 。17 バブルソート(A、N-); //特定のアルゴリズム後のセクションを参照されたい 18は クイックソート(A、N-) 。19 insetSort( 、N-); 20は シェルソート(A、N-); 21である SelectSort(A、N-); 22は ヒープソート(A、N-); 23は、 マージ(A、N-); 24 25 のために(int型 I = 0を Iは、N <; ++ I ) 26は、 { 27 COUT << A [I] << " "; 28 } 29 COUT << ENDL。 30 31 32 ながら(1 )。 33 34 戻り 0 ; 35 }
2.バブルソート
1 空隙バブルソート(INT * ARR、int型N) 2 { 3 のための(int型 I = 0 ; iがN <; I ++は) 4 { 5 ため(INT J = 0 ; J <N - I - 1、J ++ ) 6 { 7 もし(ARR [J]> ARR [J + 1 ]) 8 { 9 _swap(ARR [J]、ARR [J + 1 ])。 10 } 11 } 12 } 13 }
3.クイックソート
1つの int型 _part(INT * ARR、int型スタート、INT エンド) 2 { 3 int型 MID = スタート; 4 ながら(スタート< エンド) 5 { 6 ながら(スタート<エンド&& ARR [終了]> = ARR [MID]) / / ここでARR [終了]> = ARR [中間] または[終了]をARR>同じARR [中間]効果、影響なし 7。 { 8 - END; 9。 } 10 11。 一方、(スタート<エンド&& ARR [スタート] <= ARR [MID])// ここで、[開始] <= ARR [ARR中間] またはARR [開始] <ARR [中間 ] 同様の効果、効果なし 12 { 13 ++ 開始。 14 } 15 16 であれば(開始< エンド) 17 { 18 _swap(ARR [開始]、ARR [END])。 19 } 20 } 21 22 _swap(ARR [中間] ARR、[開始])。 23 24 リターンを開始。 25 } 26 27 空隙 _quickSort(int型 *のARR、int型開始、INT 端) 28 { 29 であれば(> =開始終了) 30 { 31 リターン。 32 } 33 34 INTミッド= _part(ARR、開始、終了)。 35 _quickSort(ARR、開始、ミッド- 1 )。 36 _quickSort(ARR、ミッド+ 1 、エンド)。 37 } 38 39 空隙クイック(INT * ARR、int型N) 40 { 41 _quickSort(ARR、0、N- 1 )。 42 }
クイックソートアルゴリズムは、しかし、クイックソートアルゴリズムのこの種の使用は単純ではない、クイックソートアルゴリズムを使用するために最も広く使用されている1つのアルゴリズム、ソートアルゴリズムの標準的なSTLライブラリですが、ハイブリッドアルゴリズムの様々なを使用します迅速なアルゴリズムベースをソートするアルゴリズムは、以降の章では、ゆっくりと導入されます。