什么叫给定增量d??是不是假如我把10个元素分5组,给定增量d就是每组的元素2个???那不对啊,后面的话“前d个记录分别做为d个组中的第一个记录”,按照上面的假设,是不是他的意思“前2个记录分别做为2个组中的第一个记录”都什么意思?
晕!朋友们帮忙解释一下,最好直白点用汉语最好了
5 个解决方案
#1
http://www.hnrtu.com/luoyuhong/sjjg/xxjc/9-2.htm
有讲解 还有Flash演示
有讲解 还有Flash演示
#2
自己跟着程序走一遍就什么都明白了。。。。
#3
其实是由你给定一个增量,这个增量决定了分成几组。
例如给定增量5,则需要排序的数分为5组,第1组是序号为5n的所有数,第2组是序号为5n+1的所有数,……,第5组是序号为5n+4的所有数。(我们的数组序号从0开始)
那你就很容易看出,第1个数(序号为0)就是第1组的第1个记录,第2个数(序号为1)就是第2组中的第1个记录,如此类推。
对每个组单独进行插入排序之后,再给定一个更小一些的增量,按照上面的方法再次进行分组插入排序。如此循环至给定增量为1,再进行插入排序之后,数组就是有序的了。
例如给定增量5,则需要排序的数分为5组,第1组是序号为5n的所有数,第2组是序号为5n+1的所有数,……,第5组是序号为5n+4的所有数。(我们的数组序号从0开始)
那你就很容易看出,第1个数(序号为0)就是第1组的第1个记录,第2个数(序号为1)就是第2组中的第1个记录,如此类推。
对每个组单独进行插入排序之后,再给定一个更小一些的增量,按照上面的方法再次进行分组插入排序。如此循环至给定增量为1,再进行插入排序之后,数组就是有序的了。
#4
什么叫给定增量d??是不是假如我把10个元素分5组,给定增量d就是每组的元素2个
=======================================
是的。
但是楼主,分组是这样的:
假设 4 个元素, 增量为 2:
a b c d,
第一组是 第一个元素a(然后相差 增量 个元素位置) 和 c
第二组是 第二个元素b (同上) 和 d
...
结果就是 前d个记录分别做为d个组中的第一个记录 ....
=======================================
是的。
但是楼主,分组是这样的:
假设 4 个元素, 增量为 2:
a b c d,
第一组是 第一个元素a(然后相差 增量 个元素位置) 和 c
第二组是 第二个元素b (同上) 和 d
...
结果就是 前d个记录分别做为d个组中的第一个记录 ....
#5
is shell sort so difficult?
i want to try it!
bye-bye!
i want to try it!
bye-bye!
#1
http://www.hnrtu.com/luoyuhong/sjjg/xxjc/9-2.htm
有讲解 还有Flash演示
有讲解 还有Flash演示
#2
自己跟着程序走一遍就什么都明白了。。。。
#3
其实是由你给定一个增量,这个增量决定了分成几组。
例如给定增量5,则需要排序的数分为5组,第1组是序号为5n的所有数,第2组是序号为5n+1的所有数,……,第5组是序号为5n+4的所有数。(我们的数组序号从0开始)
那你就很容易看出,第1个数(序号为0)就是第1组的第1个记录,第2个数(序号为1)就是第2组中的第1个记录,如此类推。
对每个组单独进行插入排序之后,再给定一个更小一些的增量,按照上面的方法再次进行分组插入排序。如此循环至给定增量为1,再进行插入排序之后,数组就是有序的了。
例如给定增量5,则需要排序的数分为5组,第1组是序号为5n的所有数,第2组是序号为5n+1的所有数,……,第5组是序号为5n+4的所有数。(我们的数组序号从0开始)
那你就很容易看出,第1个数(序号为0)就是第1组的第1个记录,第2个数(序号为1)就是第2组中的第1个记录,如此类推。
对每个组单独进行插入排序之后,再给定一个更小一些的增量,按照上面的方法再次进行分组插入排序。如此循环至给定增量为1,再进行插入排序之后,数组就是有序的了。
#4
什么叫给定增量d??是不是假如我把10个元素分5组,给定增量d就是每组的元素2个
=======================================
是的。
但是楼主,分组是这样的:
假设 4 个元素, 增量为 2:
a b c d,
第一组是 第一个元素a(然后相差 增量 个元素位置) 和 c
第二组是 第二个元素b (同上) 和 d
...
结果就是 前d个记录分别做为d个组中的第一个记录 ....
=======================================
是的。
但是楼主,分组是这样的:
假设 4 个元素, 增量为 2:
a b c d,
第一组是 第一个元素a(然后相差 增量 个元素位置) 和 c
第二组是 第二个元素b (同上) 和 d
...
结果就是 前d个记录分别做为d个组中的第一个记录 ....
#5
is shell sort so difficult?
i want to try it!
bye-bye!
i want to try it!
bye-bye!