*/
//快排
#include<stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int midian(int A[],int left,int right) {
int center = (left + right) / 2;
if (A[center] > A[right])swap(&A[center],&A[right]);
if (A[left] > A[center])swap(&A[left], &A[center]);
if (A[left] > A[right])swap(&A[left], &A[right]);
swap(&A[center], &A[right-1]);
return A[right - 1];
}
void qsort(int A[],int left,int right) {
if (left>=right)return;
else {
int jizhun;
jizhun = midian(A, left, right);
int low = left, high = right - 1;
while (1) {
while (A[++low] < jizhun);
while (A[--high] > jizhun);
if (low < high)swap(&A[low], &A[high]);
else break;
}
swap(&A[low], &A[right - 1]);
qsort(A,left,low-1);
qsort(A, low + 1, right);
}
}
int main() {
int n,A[1000];
scanf_s("%d", &n);
for (int i = 0; i < n; i++) {
scanf_s("%d", &A[i]);
}
qsort(A, 0, n - 1);
for (int i = 0; i < n; i++)
printf("%d ", A[i]);
}
快速排序
最新推荐文章于 2021-11-19 16:57:43 发布