#include"stdio.h"
void quick_sort(int a[],int left,int right)
{
int i,j,temp;
i=left;
j=right;
temp=a[left];
if(left>right)
return;
while(i!=j)
{
while(j>i&&a[j]>temp)
j--;
if(j>i)
a[i++]=a[j];
while(j>i&&a[i]<=temp)
i++;
if(j>i)
a[j--]=a[i];
}
a[i]=temp;
quick_sort(a,left,i-1);
quick_sort(a,right,i+1);
}
void main()
{
void quick_sort(int a[],int left,int right);
int a[7]={8,2,6,12,3,9,5};
int i;
quick_sort(a,0,7);
for(i=0;i<9;i++)
printf("%d\t",a[i]);
}
小弟真的很急,麻烦不要打岔好吗,谢谢啦,明白之后还可以加分的。
加分那是肯定的啦,不过我想再问一下我的程序里面为什么不能输出啊?
追答if(left<i-1)
quick_sort(a,left,i-1);
if(right<i+1)
quick_sort(a,right,i+1);
你要控制 left总要小于i-1 下同,否则报错
那为什么我调试的时候没有问题呢?
追答那就跟指针有关,你运行的时候就出不来,就是你的指针是野指针了,所以不出结果
追问能加你qq吗?以后好多交流,感觉你真的很牛,谢啦!
追答看我采纳率我就是一直小菜鸟