这是使用快速排序算法对数组中的数据进行降序排序的代码,每次运行随机生成 10 个数,C 语言递归实现。
#include
#include
#include
void swap(int *x, int *y) {
int t = *x;
*x = *y;
*y = t;
}
void quick_sort_recursive(int arr[], int start, int end) {
if (start >= end)
return;
int mid = arr[end];
int left = start, right = end - 1;
while (left
while (arr[left] > mid && left
left++;
while (arr[right] <= mid && left
right--;
swap(&arr[left], &arr[right]);
}
if (arr[left] <= arr[end])
swap(&arr[left], &arr[end]);
else
left++;
if (left) {
quick_sort_recursive(arr, start, left - 1);
}
quick_sort_recursive(arr, left + 1, end);
}
void quick_sort(int arr[], int len) {
quick_sort_recursive(arr, 0, len - 1);
}
int main() {
int arr[10], i;
srand(time(NULL));
for(i=0; i<10; i++)
arr[i] = rand();
quick_sort(arr, 10);
for(i=0; i<10; i++)
printf("%d ", arr[i]);
}