这个快速排序有问题吗?
#include<stdio.h>
void quicksort(int p,int n,int m[])
{ int i,j,k;
i=p; j=n;
k=m[p];
while(i<j)
{
while(i<j&&m[j]>k) j++;
if(i<j){m[i]=m[j];i++;}
while(i<j&&m[i]<k) i++;
if(i<j){m[j]=m[i];j++;}
}
m[i]=k;
if(i-1>p) quicksort(p,i-1,m);
if(i+1<n) quicksort(i+1,p,m);
return;
}
int main()
{
int i,j,k[7];
for(i=0;i<7;i++)
scanf("%d",&k[i]);
quicksort(0,6,k);
for(i=0;i<7;i++)
printf("%d ",k[i]);
}
怎么一输入数据就退出啊?void quicksort(int p,int n,int m[])
{ int i,j,k;
i=p; j=n;
k=m[p];
while(i<j)
{
while(i<j&&m[j]>k) j++;
if(i<j){m[i]=m[j];i++;}
while(i<j&&m[i]<k) i++;
if(i<j){m[j]=m[i];j++;}
}
m[i]=k;
if(i-1>p) quicksort(p,i-1,m);
if(i+1<n) quicksort(i+1,p,m);
return;
}
int main()
{
int i,j,k[7];
for(i=0;i<7;i++)
scanf("%d",&k[i]);
quicksort(0,6,k);
for(i=0;i<7;i++)
printf("%d ",k[i]);
}
我试了一下是第一个while(i<j)
有问题但是不知道为什么。