#include <stdio.h>
/*
快排算法,复杂度 log(N)
*/
static void quick_sort(int arr[], int right, int left)
{
int base = arr[left];
int i = right, j = left;
if (right >= left)
return;
while (i < j) {
while ((arr[i] <= base) && (i < j)) {
i++;
}
arr[j] = arr[i];
while ((arr[j] > base) && (i < j)) {
j--;
}
arr[i] = arr[j];
}
arr[j] = base;
quick_sort(arr, right, j - 1);
quick_sort(arr, j + 1, left);
}
int main(void)
{
#define SIZE 9
int i, test[SIZE] = {5, 6, 1, 9, 0, 3, 4, 8, 7};
printf("orig: ");
for (i = 0; i < SIZE; i++) {
printf("%d ", test[i]);
}
printf("\n");
quick_sort(test, 0, SIZE-1);
printf("after: ");
for (i = 0; i < SIZE; i++) {
printf("%d ", test[i]);
}
printf("\n");
return 0;
}
快速排序练习
于 2023-01-21 19:50:47 首次发布