当前位置: 代码迷 >> C语言 >> [求助]查下面的一个程序的错?
  详细解决方案

[求助]查下面的一个程序的错?

热度:69   发布时间:2007-04-12 22:47:44.0
[求助]查下面的一个程序的错?

#include<stdio.h>

void shellsort(int v[],int n)
{
int gap,i,j,temp;
for(gap=n/2;gap>0;gap/=2)
for(i=gap;i<n;i++)
for(j=i-gap; j>= 0 &&v[j]>v[j+gap];j-=gap){
temp=v[j];
v[j]=v[j+gap];
v[j+gap]=temp;
}
}


----------------解决方案--------------------------------------------------------
我正在测试中

----------------解决方案--------------------------------------------------------

看起来没有什么错误.


----------------解决方案--------------------------------------------------------
楼主应该提供一些线索,我们都不知道程序要做什么!
----------------解决方案--------------------------------------------------------
没有MAIN函数
----------------解决方案--------------------------------------------------------
无main()函数
----------------解决方案--------------------------------------------------------
不知道程序是干什么的,没有程序入口啊
----------------解决方案--------------------------------------------------------
没有注释 没有说明
扔给我们一堆无意义的 i j n gap

这不是好的编程风格,其实习惯是在日常中养成的
----------------解决方案--------------------------------------------------------
以下是引用yangzhifu在2007-4-12 22:47:44的发言:

#include<stdio.h>

void shellsort(int v[],int n)
{
int gap,i,j,temp;
for(gap=n/2;gap>0;gap/=2)
for(i=gap;i<n;i++)
for(j=i-gap; j>= 0 &&v[j]>v[j+gap];j-=gap){
temp=v[j];
v[j]=v[j+gap];
v[j+gap]=temp;
}
}

似乎是用来做排序的,但是我觉得你的排序做了很多重复的事情,当gap=1的时候你的排序其实就是冒泡了.
也就是说在gap不是1之前做了很多重复事情
----------------解决方案--------------------------------------------------------

  相关解决方案