C言語でクイックソートを使ってソートする方法

coldplay.xixi
リリース: 2020-08-08 10:13:02
オリジナル
3558 人が閲覧しました

クイックソート法の配置方法: まず、ソートするたびに基準点を設定し、基準点以下のすべての数値を基準点の左側に配置し、次にそれ以上のすべての数値を配置します。参照点以上 参照点の右側; 最後に、すべての交換は、毎回隣接する番号のみを交換できるバブルソートのようなものではなくなり、交換距離ははるかに大きくなります。

C言語でクイックソートを使ってソートする方法

クイックソート方法:

アルゴリズムのアイデア:

( 1) 参照要素 (キーと呼ばれる) key=arr[left] として並べ替えるレコード シーケンスからレコード (通常は最初のレコード) を選択し、2 つの変数を設定します。 left はシーケンスの左端の部分を指します。 right はデータの右端の部分を指します。

C言語でクイックソートを使ってソートする方法

(2) key は最初に arr[right] と比較されます。arr[right]key の場合は、right--、right-- を比較し、arr[right] と key until arr[right]

C言語でクイックソートを使ってソートする方法

(3) 右側にarr[right]key の場合は、arr[right]=arr[left]、arr[left]

C言語でクイックソートを使ってソートする方法

(4) 次に右に移動して上記の手順を繰り返します

C言語でクイックソートを使ってソートする方法

(5) 最後に {23 58 13 を取得します10 57 62} 65 {106 78 95 85} を入力し、左側の部分配列と右側の部分配列に対して同じ演算を実行します。最後に、順序付けされたシーケンスが取得されます。

C言語でクイックソートを使ってソートする方法

アルゴリズムの実装:

public class QuickSort {
 
   public static void quickSort(int [] arr,int left,int right) {
      int pivot=0;
      if(left<right) {
         pivot=partition(arr,left,right);
         quickSort(arr,left,pivot-1);
         quickSort(arr,pivot+1,right);
      }
   }
 
   private static int partition(int[] arr,int left,int right) {
      int key=arr[left];
      while(left<right) {
         while(left<right && arr[right]>=key) {
            right--;
         }
         arr[left]=arr[right];
         while(left<right && arr[left]<=key) {
            left++;
         }
         arr[right]=arr[left];
      }
      arr[left]=key;
      return left;
   }
  
   public static void main(String[] args) {
      int arr[]= {65,58,95,10,57,62,13,106,78,23,85};
      System.out.println("排序前:"+Arrays.toString(arr));
      quickSort(arr,0,arr.length-1);
      System.out.println("排序后:"+Arrays.toString(arr));
   }
}
ログイン後にコピー
排序前:[65, 58, 95, 10, 57, 62, 13, 106, 78, 23, 85]
排序后:[10, 13, 23, 57, 58, 62, 65, 78, 85, 95, 106]
ログイン後にコピー

関連学習の推奨事項: C ビデオ チュートリアル

以上がC言語でクイックソートを使ってソートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート