C语言快速排序法,希望诸位大神能帮小弟一下,小弟在线等啊!这个程序为什么没有东西输出来啊?:

#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]);
}
小弟真的很急,麻烦不要打岔好吗,谢谢啦,明白之后还可以加分的。

改正,我是冲你加分才进来的

#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;
if(left<i-1)
quick_sort(a,left,i-1);
if(right<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<7;i++)
printf("%d\t",a[i]);
printf("\n");
}追问

加分那是肯定的啦,不过我想再问一下我的程序里面为什么不能输出啊?

追答

if(left<i-1)
quick_sort(a,left,i-1);
if(right<i+1)
quick_sort(a,right,i+1);
你要控制 left总要小于i-1 下同,否则报错

追问

那为什么我调试的时候没有问题呢?

追答

那就跟指针有关,你运行的时候就出不来,就是你的指针是野指针了,所以不出结果

追问

能加你qq吗?以后好多交流,感觉你真的很牛,谢啦!

追答

看我采纳率我就是一直小菜鸟

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-09
画一个框了几桌吧,读两天