c 语言弱智问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 10:39:26
在TC下如下代码能编译通过,但没有输出,请问是为什么,该怎样改?
#include "stdio.h"
void sort(int a[],int i,int j)
{
int m, n, k, q, t;
k=(i+j)/2;
q=a[k];
for(m=i,n=j;m<k&&n>k;m++,n--)
{
if(a[m]>q) k--;
if(a[n]<q) k++;
}
t=a[k];
a[k]=q;
a[(i+j)/2]=t;
if(i<k) sort(a,i,k);
if(k<j) sort(a,k,j);
}
void main()
{
int d[10]={34,20,89,5,3,89,1,23,2,4};
int i;
sort(d,0,9);
for(i=1;i<=9;i++)
printf("%d\n",d[i]);
}

递归设计的问题,一个死循环,一直在执行if(i<k) sort(a,i,k);
的递归调用;楼主的算法设计问题.

为什么只输出后面9个数字?
是输出结果错误还是没显示?需要强行中止程序运行?
如果是那样的话,一定是死循环了,sort()这个递归函数有问题。

==========================

排序算法,都有现成的例子,先把例子看懂了,再试着自己写吧
还有,你把自己用的什么排序算法说明白,才好让别人分析啊……