#include <stdio.h>
void quick_sort(int[], int, int);
void arr_p(int[], int);
void arr_p(int arr[], int length) { for (int i = 0; i < length; i++) { printf("%4d ", arr[i]); } putchar('\n'); }
void quick_sort(int arr[], int left, int right) {
int l = left, r = right, temp, middle; middle = (right + left) / 2; while (l <= r) { while (arr[l] < arr[middle]) { l++; } while (arr[r] > arr[middle]) { r--; } if (l <= r) { temp = arr[l]; arr[l] = arr[r]; arr[r] = temp; l++; r--; }
if (l < right) { quick_sort(arr, l, right); } if (left < r) { quick_sort(arr, left, r); } } }
int main() { int arr1[] = {14, 2, 66, 457, 8, 7987, 35, 8, 342, 654, 867, 213}; int arr2[] = {14, 2, 66, 457, 8, 7987, 35, 8, 342, 654, 867}; int length = sizeof(arr1) / sizeof(arr1[0]); int length2 = sizeof(arr2) / sizeof(arr2[0]);
printf("前:"); arr_p(arr1, length); quick_sort(arr1, 0, length - 1); printf("后:"); arr_p(arr1, length); printf("- - - - - - - - - - - - - - - - - -\n"); printf("前:"); arr_p(arr2, length2); quick_sort(arr2, 0, length2 - 1); printf("后:"); arr_p(arr2, length2);
return 0; }
|