使用快速排序算法,需要先定义一个快速排序函数,然后在主函数中调用该函数。
下面是一个示例的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
函数对其进行排序。最后,输出排序前后的数组元素。