首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

希尔排序的小疑点

2012-02-11 
希尔排序的小问题voidshellsort(intv[],intn){intgap,i,j,tempfor(gapn/2gap0gap/2)for(igapini

希尔排序的小问题
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;
                              }
      }
其中最内部的for   (j=i-gap;   j> =0   &&   v[j]> v[j+gap];   j-=gap)中j-=gap的语句有什么用,是不是必要呢?

[解决办法]
当然要了,不然也不用循环
shell排序是间隔gap的各个元素排序
for (j=i-gap; j> =0 && v[j]> v[j+gap]; j-=gap)
这部分应该是冒泡排序

热点排行