使用快速排序算法,需要先定義一個快速排序函數,然后在主函數中調用該函數。
下面是一個示例的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
從數組的兩端向中間遍歷,找到需要交換的元素,直到i > j
。然后,遞歸調用quickSort
函數對分割后的子數組進行快速排序。
在主函數中,我們定義了一個整型數組,并調用quickSort
函數對其進行排序。最后,輸出排序前后的數組元素。