| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 688 人关注过本帖
标题:稀尔排序的算法问题
只看楼主 加入收藏
swiminfire
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2005-8-11
收藏
 问题点数:0 回复次数:1 
稀尔排序的算法问题

void process::shellsort(sample &s) //希尔排序

{ int i,j,gap,temp; gap=s.n/2;

while(gap>0)

{ for(i=gap;i<s.n;i++)

{ j=i-gap;

while (j>=gap)

if(s.A[j]>s.A[j+gap])

{ temp=s.A[j]; s.A[j]=s.A[j+gap]; s.A[j+gap]=temp; j=j-gap; }

else j=0;

}

gap=gap/2;

}

}
这是我看别人的算法的代码,但是不明白中间那个判断的意思,我知道当IF为TURE时,将数组头和数组中间的数调换,当IF为FALSE时,J=0;是什么意思,还有后面再一个gap=gap/2;又何解???
望高手指点,希望能把整个算法详解一下.新手问题多.先谢过了!

搜索更多相关主题的帖子: 算法 
2007-01-27 22:03
wjtpanda
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-12-15
收藏
得分:0 

2007-02-02 19:11
快速回复:稀尔排序的算法问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022531 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved