🇨🇳 C语言实现快速排序(三种) 🚀 快速排序c语言
🔥 大家好!今天给大家分享一下如何用C语言实现快速排序算法。快速排序是一种非常高效的排序方法,常用于处理大量数据。下面将详细介绍三种不同方式实现快速排序,包括递归实现、非递归实现以及三路划分的实现。
📚 递归实现快速排序:
```c
void quickSort(int arr[], int left, int right) {
if (left < right) {
int pivot = partition(arr, left, right);
quickSort(arr, left, pivot - 1);
quickSort(arr, pivot + 1, right);
}
}
```
🎈 非递归实现快速排序:
```c
void quickSortNR(int arr[], int n) {
int stack[n];
int top = -1;
stack[++top] = 0;
stack[++top] = n - 1;
while (top >= 0) {
int right = stack[top--];
int left = stack[top--];
int pivot = partition(arr, left, right);
if (pivot - 1 > left) {
stack[++top] = left;
stack[++top] = pivot - 1;
}
if (pivot + 1 < right) {
stack[++top] = pivot + 1;
stack[++top] = right;
}
}
}
```
💡 三路划分快速排序:
```c
void quickSortThreeWay(int arr[], int left, int right) {
if (left < right) {
int lt = left, gt = right;
int pivot = arr[left];
int i = left + 1;
while (i <= gt) {
if (arr[i] < pivot) {
swap(&arr[lt++], &arr[i++]);
} else if (arr[i] > pivot) {
swap(&arr[i], &arr[gt--]);
} else {
i++;
}
}
quickSortThreeWay(arr, left, lt - 1);
quickSortThreeWay(arr, gt + 1, right);
}
}
```
📚 以上就是三种不同的快速排序实现方法。希望对大家有所帮助!如果大家有任何疑问或者建议,请在评论区留言讨论!🚀
免责声明:本答案或内容为用户上传,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 如遇侵权请及时联系本站删除。