随机快排 输出的数组还是原数组,没有排序 求大佬 #include<stdio.h> #includ

随机快排 输出的数组还是原数组,没有排序 求大佬 #include#include#includeint random(int min, int max) { srand((unsigned)time(NULL)); int num = rand() % (max - min+1) + min; return num; } void exchange(int a, int b) { int temp; temp = a; a = b; b = temp; } int partition(int arr[], int p, int r) { int x = arr[r]; int i = p - 1; for (int j = p; j <= r - 1; j++) { if (arr[j] <= x) { exchange(arr[i + 1], arr[j]); i++; } } exchange(arr[i + 1], arr[r]); int q = i + 1; return q; } int randomized_partition(int arr[], int p, int r) { int s = random(p, r); exchange(arr[s], arr[r]); int q = partition(arr, p, r); return q; } void randomize_quicksort(int arr[], int p, int r) { if (p < r) { int q = randomized_partition(arr, p, r); randomize_quicksort(arr, p, q - 1); randomize_quicksort(arr, q + 1, r); } } int main(){ int a[] = { 1,3,0,7,2,6,9 }; randomize_quicksort(a, 0, 6); for (int i = 0; i < 7; i++) { printf("%d ", a[i]); } return 0; }

参数传递的原理要先搞清楚。

你的exchange实现函数不对,入参应该是一个数组,和两个要互相交换的元素的下标。

另外,你贴代码可以使用代码段控件。