C言語によるクイックソートアルゴリズムを使用する方法
クイックソートアルゴリズムを使用するには、クイックソート関数を定義して、メイン関数からその関数を呼び出す必要があります。
C言語のクイックソートアルゴリズムの実装の例を以下に示します。
#include <stdio.h>
void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int pivot = arr[(left + right) / 2]; // 选择中间的元素作为基准值
// 分割数组
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
// 交换元素
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
// 递归调用快速排序
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
}
int main() {
int arr[] = {5, 9, 3, 1, 2, 8, 4};
int size = sizeof(arr) / sizeof(arr[0]);
printf("Before sorting:\n");
for (int i = 0; i < size; i++)
printf("%d ", arr[i]);
quickSort(arr, 0, size - 1);
printf("\nAfter sorting:\n");
for (int i = 0; i < size; i++)
printf("%d ", arr[i]);
return 0;
}
この例では、まず配列と配列の左右の境界の値を受け取るquickSort関数というのを定義しています。関数内では、配列の中央の要素を基準値として選択し、iとjという2つのポインタを使って配列の両端から中央に向かってトラバースして、交換が必要な要素を見つけます。i>jになるまで。このあと、分割された子配列に対して再帰的にquickSort関数を呼び出してクイックソートを行います。
クイックソートという関数を呼び出し、整数型配列をソートし、最後にソート前後の配列を出力しています。