クイックソートの詳細
1001 ワード
高速ソートは非常に重要なアルゴリズムであり,ビッグデータのソートではバブルソートや挿入ソートなどのアルゴリズムよりも効率的に高いため,プログラマーが把握しなければならないアルゴリズムである.アルゴリズムの構想高速ソートアルゴリズムは実は簡単で、分治戦略を採用している.手順は次のとおりです. 基準要素(pivot) を選択 pivotより小さいものはpivotの左側に、pivotより大きいものはpivotの右側 に置く. pivotの左のシーケンスと右のシーケンスをそれぞれ再帰的に実行するステップ1とステップ2 .
具体的なコードは以下の である.
/*
* l:
* r:
* a:
*/
void quickSort(int *a, int l, int r) {
if (l < r) {
int i,j,x;
i = l;
j = r;
x = a[i];
while (i < j) {
while(i < j && a[j] > x) {
j--; // x
}
if(i < j)
a[i++] = a[j]; // i++
while(i < j && a[i] < x) {
i++; // x
}
if(i < j)
a[j--] = a[i];
}
a[i] = x;
quickSort(a, l, i-1); /* */
quickSort(a, i+1, r); /* */
}
}