这个书上讲的都什么意思?看老半天不明白

时间:2021-11-15 22:25:10
给定增量d,Shell插入排序算法组内排序的实现过程是:前d个记录分别做为d个组中的第一个记录,他们各自的组中排序码是有序的,对从第d+1个记录以后的各个记录,依次使用直接插入排序的方法将他们插入各自所在的组中。

  
什么叫给定增量d??是不是假如我把10个元素分5组,给定增量d就是每组的元素2个???那不对啊,后面的话“前d个记录分别做为d个组中的第一个记录”,按照上面的假设,是不是他的意思“前2个记录分别做为2个组中的第一个记录”都什么意思?

晕!朋友们帮忙解释一下,最好直白点用汉语最好了

5 个解决方案

#1


http://www.hnrtu.com/luoyuhong/sjjg/xxjc/9-2.htm
有讲解 还有Flash演示

#2


自己跟着程序走一遍就什么都明白了。。。。

#3


其实是由你给定一个增量,这个增量决定了分成几组。

例如给定增量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个组中的第一个记录  ....

#5


is shell sort so difficult?
 i want to try it! 
 bye-bye!

#1


http://www.hnrtu.com/luoyuhong/sjjg/xxjc/9-2.htm
有讲解 还有Flash演示

#2


自己跟着程序走一遍就什么都明白了。。。。

#3


其实是由你给定一个增量,这个增量决定了分成几组。

例如给定增量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个组中的第一个记录  ....

#5


is shell sort so difficult?
 i want to try it! 
 bye-bye!