C语言实现快速排序
快速排序算法
1.划分操作
int Partition(int arr[], int low, int high) {
int point = arr[low];
while (low < high) {
while (low < high && arr[high] >= point)
high--;
arr[low] = arr[high];
while (low < high && arr[low] <= point)
low++;
arr[high] = arr[low];
}
arr[low] = point;
return low;
}
2.快速排序算法实现
void QuickSort(int arr[], int low, int high) {
int point;
if (low < high) {
point = Partition(arr, low, high);
QuickSort(arr, low, point - 1);
QuickSort(arr, point + 1, high);
}
}
项目完整代码
#include <stdio.h>
int Partition(int arr[], int low, int high) {
int point = arr[low];
while (low < high) {
while (low < high && arr[high] >= point)
high--;
arr[low] = arr[high];
while (low < high && arr[low] <= point)
low++;
arr[high] = arr[low];
}
arr[low] = point;
return low;
}
void QuickSort(int arr[], int low, int high) {
int point;
if (low < high) {
point = Partition(arr, low, high);
QuickSort(arr, low, point - 1);
QuickSort(arr, point + 1, high);
}
}
int main() {
int arr[] = {49, 38, 65, 97, 76, 13, 27, 49};
int len = sizeof(arr) / sizeof(int);
QuickSort(arr, 0, len - 1);
printf("快速排序结果为:");
for (int i = 0; i < len; ++i) {
printf("%d ", arr[i]);
}
return 0;
}
运行效果图
int arr[] = {49, 38, 65, 97, 76, 13, 27, 49};
