#include <cstdio>
#include <cstdlib>
#include <ctime>
int main() {
void QuickSort(int *a, int p, int r);
const int MAXLEN = 10;
int a[MAXLEN] = {3, 8, 9, 1, 0, 2, 5, 7, 4, 6};
printf("befor sort:");
for(int i=0; i<MAXLEN; ++i) {
printf("%d ", a[i]);
}
putchar('\n');
QuickSort(a, 0, MAXLEN-1);
printf("after sort:");
for(int i=0; i<MAXLEN; ++i) {
printf("%d ", a[i]);
}
putchar('\n');
return 0;
}
void Swap(int *e1, int *e2) {
int tmp;
tmp=*e1, *e1=*e2, *e2=tmp;
}
void QuickSort(int *a, int p, int r) {
if (p>=r) return;
srand(time(nullptr));
Swap(&a[rand() % (r+1-p) + p], &a[r]);
int key = a[r];
int k = p;
for (int i=p; i<r; ++i) {
if (a[i] < a[r]) {
Swap(&a[i], &a[k]);
++k;
}
}
Swap(&a[k], &a[r]);
QuickSort(a, p, k-1);
QuickSort(a, k+1, r);
}
快速排序
最新推荐文章于 2024-07-17 10:35:12 发布