📅  最后修改于: 2023-12-03 15:00:13.676000             🧑  作者: Mango
快速排序(QuickSort)是一种常用的排序算法,它的平均时间复杂度为 O(nlogn)。在大多数情况下,快速排序算法的性能优于其他常见的排序算法,如冒泡排序和插入排序。
本文将介绍C语言中快速排序算法的通用实现,并提供相应的代码示例。
快速排序算法的基本思想是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的数据小,然后再按此方法对这两部分数据分别进行快速排序,整个过程递归进行,以此达到整个数据变成有序序列。
具体的实现步骤如下:
下面是C语言中快速排序算法的通用实现的代码示例:
#include <stdio.h>
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
int partition(int arr[], int low, int high) {
int pivot = arr[low];
int i = low + 1;
int j = high;
while (1) {
while (i <= j && arr[i] < pivot) {
i++;
}
while (i <= j && arr[j] > pivot) {
j--;
}
if (i > j) {
break;
}
swap(&arr[i], &arr[j]);
}
swap(&arr[low], &arr[j]);
return j;
}
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pivotIndex = partition(arr, low, high);
quickSort(arr, low, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, high);
}
}
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int arr[] = {7, 2, 1, 6, 8, 5, 3, 6};
int size = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
printArray(arr, size);
quickSort(arr, 0, size - 1);
printf("Sorted array: ");
printArray(arr, size);
return 0;
}
上述代码中,swap
函数用于交换两个元素的值,partition
函数用于将序列分割并返回基准元素的正确位置。quickSort
函数是递归地对子序列进行快速排序的主要函数。
在main
函数中,我们可以看到如何使用快速排序算法对一个整型数组进行排序。
快速排序算法是一种高效的排序算法,它对于大规模数据的排序有着良好的性能。通过理解快速排序算法的基本思想和实现步骤,我们可以在实际开发中灵活运用该算法解决排序问题。