这段希尔排序程序错在哪呢
#include<stdio.h>
void main()
{
int a[]={1,5,2,0,69},i;
void ShellSort(int a[],int n);
int n=sizeof(a)/sizeof(a[0]);
ShellSort(a,n);
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
}
void ShellSort(int a[],int n)
{
int gap=n/2,temp,i;
while(gap>0)
{
for(i=0;i<n;i++)
{
while(i<n-gap)
{
if(a[i]>a[i+gap])
{
temp=a[i];
a[i]=a[i+gap];
a[i+gap]=temp;
}
i=i+gap;
}
}
gap=gap/2;
}
}
[解决办法]
#include<stdio.h>void main(){ int a[]={1,5,2,0,69},i; void ShellSort(int a[],int n); int n=sizeof(a)/sizeof(a[0]); ShellSort(a,n); for(i=0;i<n;i++) { printf("%d ",a[i]); }}void ShellSort(int a[],int n){ int gap= n/2,t,i,j; while(gap>0) { for(i=gap;i<n;i++) { t = a[i]; j = i - gap; while(j >= 0 && t < a[j]) { a[j + gap] = a[j]; j = j - gap; } a[j + gap] = t; } gap/=2; }}