#includevoid swap(int *a, int *b); void TraverseArr(int arr[], int len); void quick_sort(int arr[], int len); void qsort(int arr[], int low, int high); int partition(int arr[], int low, int high); int main(int args, char const *argv[]) { int arr[] = {1, 3, 5, 4, 2}; int len = sizeof(arr) / sizeof(int); printf("Before sorting: "); TraverseArr(arr, len); quick_sort(arr, len); printf("After sorting: "); TraverseArr(arr, len); return 0; } void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } void TraverseArr(int arr[], int len) { for (int i = 0; i < len; i++) { printf("%-4d", arr[i]); } printf("n"); return; } int partition(int arr[], int low, int high) { int i = low - 1; int j = high; int pivot = arr[high]; while (1) { while (arr[++i] < pivot) ; while (arr[--j] > pivot) ; if (i < j) { swap(&arr[i], &arr[j]); } else { break; } } swap(&arr[i], &arr[high]); return i; } void qsort(int arr[], int low, int high) { if (low < high) { int pivotloc = partition(arr, low, high); qsort(arr, low, pivotloc - 1); qsort(arr, pivotloc + 1, high); } } void quick_sort(int arr[], int len) { qsort(arr, 0, len - 1); }
源文件请点击下载:
quick_sort



