读书人

这段希尔排序程序错在哪呢解决方案

发布时间: 2012-04-22 18:34:46 作者: rapoo

这段希尔排序程序错在哪呢
#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;
}
}




[解决办法]

C/C++ code
#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;            }} 

读书人网 >C语言

热点推荐