C语言程序执行问题
我用c语言编写了一个希尔排序的程序。程序本身没有什么问题,因为当我用3个数据进行测试时,发现能得到正确的结果,但是如果数据增加到4个或以上程序就只能执行到一半,但是没有提示错误,也没有死机,就是感觉程序不动了。一下是源程序:#include<stdio.h>
#define LEN 20
void ShellSort(int a[],int length);
void BubbleSort(int a[],int start,int length,int jump);
void main()
{
int x[LEN];
int i;
int length;
printf("Please input the length of array!\n");
scanf("%d",&length);
//输入数组
printf("Please input numbers:");
for(i=0;i<length;i++)
{
scanf("%d",&x[i]);
}
printf("\n");
printf("the orginal numbers are:");
for(i=0;i<length;i++)
{
printf("%d ",x[i]);
}
printf("\n");
ShellSort(x,length);
printf("the sorted numbers are:");
for(i=0;i<length;i++)
{
printf("%d ",x[i]);
}
printf("\n");
}
void ShellSort(int a[],int length)
{
int jump,i;
jump=length;
while(jump>1)
{
jump=length/2;
for(i=0;i<jump;i++)
BubbleSort(a,i,length,jump);
}
}
void BubbleSort(int a[],int start,int length,int jump)
{
int alldone=0;
int i,j;
for(i=start;i<length-jump;i+=jump)
{
alldone=0;
for(j=i;j<length-i-jump;j+=jump)
if(a[j]>a[j+jump])
{
int temp=a[j];
a[j]=a[j+jump];
a[j+jump]=temp;
alldone=1;
}
if(alldone==0) break;
}
}
比如我输入3个数据: 3 1 4
显示:
the orgianl numbers: 3 1 4
the sorted numbers are: 1 3 4
但是如果是4个数据的话: 1 2 3 4
只显示 : the orginal numbers: 1 2 3 4,然后程序就不动了。求大神指教啊!!下面是程序执行的截图。
http://b.hiphotos.baidu.com/zhidao/pic/item/0823dd54564e925810d051369d82d158cdbf4e06.jpg
http://h.hiphotos.baidu.com/zhidao/pic/item/a1ec08fa513d26971653df8554fbb2fb4216d862.jpg
请问是什么问题,应该怎么解决呢?