クイックソート法の配置方法: まず、ソートするたびに基準点を設定し、基準点以下のすべての数値を基準点の左側に配置し、次にそれ以上のすべての数値を配置します。参照点以上 参照点の右側; 最後に、すべての交換は、毎回隣接する番号のみを交換できるバブルソートのようなものではなくなり、交換距離ははるかに大きくなります。
クイックソート方法:
アルゴリズムのアイデア:
( 1) 参照要素 (キーと呼ばれる) key=arr[left] として並べ替えるレコード シーケンスからレコード (通常は最初のレコード) を選択し、2 つの変数を設定します。 left はシーケンスの左端の部分を指します。 right はデータの右端の部分を指します。
(2) key は最初に arr[right] と比較されます。arr[right] (3) 右側にarr[right]key の場合は、arr[right]=arr[left]、arr[left] (4) 次に右に移動して上記の手順を繰り返します (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言語でクイックソートを使ってソートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。