向热心人求助:关于希尔排序算法的一个基础问题

pass299 2009-10-05 07:40:27
采用希尔排序法,对以下关键字排序列按递增次序排列,使用的增量序列为5,3,1,请给出每趟排序的结果。
(8,6,3,4,2,9,7,5,1,0)

书上的解答的答案是这样的:
第1趟:8,6,3,1,0,9,7,5,4,2
第2趟:1,0,3,2,5,4,7,6,9,8
第3趟:0,1,2,3,4,5,6,7,8,9,

我又查了相关的书,书上说是“希尔排序法”根据相应的增量确定分量,请问热心人,具体它是如何进行分组的啊,实在不会了,请指导。

...全文
109 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pass299 2009-10-06
  • 打赏
  • 举报
回复
谢谢
hhygcy 2009-10-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pass299 的回复:]
按照您上面的指导,“第二次的时候增量为3”的情况:
分组成:
第一步:(是接着“增量为5”的序列)
8,1,7,2
6,0,5
3,9,4

第二步:
1 8 7 2 (发现第2列中8和6需要置换,然后将它们放在1,0之前)
0 6 5
3 9 4
第三步
1 2 7 8 (然后,将2和8置换,还有5和4置换,就变成如下)
0 5 6
3 4 9

在排序就变成了1,0,3,2,5,4,7,6,9,8

思路是这样,没有什么错误吧,有错误请再次指教,谢谢
[/Quote]
恭喜你 答对了 :)
pass299 2009-10-06
  • 打赏
  • 举报
回复
按照您上面的指导,“第二次的时候增量为3”的情况:
分组成:
第一步:(是接着“增量为5”的序列)
8,1,7,2
6,0,5
3,9,4

第二步:
1 8 7 2 (发现第2列中8和6需要置换,然后将它们放在1,0之前)
0 6 5
3 9 4
第三步
1 2 7 8 (然后,将2和8置换,还有5和4置换,就变成如下)
0 5 6
3 4 9

在排序就变成了1,0,3,2,5,4,7,6,9,8

思路是这样,没有什么错误吧,有错误请再次指教,谢谢
ToBeTough 2009-10-05
  • 打赏
  • 举报
回复
楼上
hhygcy 2009-10-05
  • 打赏
  • 举报
回复
分组时类似这样的
原始数组 8,6,3,1,0,9,7,5,4,2
第一个增量为5就把原来的数字分成如下几组:
8,9
6,7
3,5
4,1
0,2
然后排序 显然第四组4,1需要导致 所以排序完成后变成了你说的第一趟的结果
8,6,3,1,0,9,7,5,4,2

第二次的时候增量为3:
分组成:
8,1,7,2
6,0,5
3,9,4

在排序就变成了1,0,3,2,5,4,7,6,9,8
以此类推

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧