#include <stdio.h>
#define MAX_NUM 80
void quicksort(int* a, int p, int q){
int i=p, j=q;
int temp=a[p];
while(i<j){
//越过不小于基准值的数据
while (a[j]>=temp && j>i) j--;
if (i<j){//从小到大排序
a[i] = a[j];
i++;
//越过小于基准值的数据
while (a[i]<=temp && i<j) i++;
if (i<j){
a[j] = a[i];
j--;
}
}
}
a[i] = temp;//基准值最后的位置,完成子序列的分割
for (int k=p; k<=q; k++){
if (k==i){
printf("(%d) ", a[k]);
continue;
}
printf ("%d ", a[k]);
}
printf ("\n");
if (p < (i-1)) quicksort(a, p, i-1);
if ((j+1) < q) quicksort(a, j+1, q);
}
int main(void){
int a[MAX_NUM];
int n;
printf("Input total number: ");
scanf ("%d", &n);
if (n > MAX_NUM) n=MAX_NUM;
for(int i = 0; i < n;i++)
{
scanf("%d",&a[i]);
}
printf("Divide sequence:\n");
quicksort(a,0,n-1);
printf("The sorted result:\n");
for(int i = 0; i < n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
getchar();getchar();
return 0;
}
快速排序简单实现
猜你喜欢
转载自blog.csdn.net/qq_28301007/article/details/78857412
今日推荐
周排行