更新时间2019-04-07 20:04:56
#include<stdio.h>
#define N 1000
int swap(int a[],int i,int j)
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
int partition(int a[],int p,int q)
{
int x=a[p];
int i=p,j;
for(j=p+1;j<=q;j++)
{
if(a[j]<=x)
{
i++;
swap(a,i,j);
}
}
swap(a,p,i);
return i;
}
void quickSort(int a[],int p,int q)
{
if(p<q)
{
int r=partition(a,p,q);
quickSort(a,p,r-1);
quickSort(a,r+1,q);
}
}
int main()
{
int i,m,p,a[N];
while(scanf("%d",&m)!=EOF){
for(i=0;i<m;i++)
scanf("%d",&a[i]);
quickSort(a,0,m);
for( i=0;i<m;i++)
{
printf("%d ",a[i]);
}
printf(" ");
}
return 0;
}
测试数据;
6 1 8 6 5 3 4
5 12 42 2 5 8
第一个数字代表输入的个数,后面是输入
你的
quickSort(a,0,m);
应该是
quickSort(a,0,m-1);
0~m-1是m个数据