对5个数排序最少的比较次数

  • 答案是7次,使用归并插入排序的思想。前四个先两两排成有序的,再对较大者排序,然后第五个元素做插入(二分),第三个元素插入。

5 个数最快的排序, H.B.Demuth 于 1956 年在他的博士论文中提出了以下方法:

开始时,就像用合并对4个元素排序一样,首先比较a:b,接着 c:d,然后把每对的较大者拿来比较,这就产生了a<b<d和 c<d, 进行 3 次比较, 可以找到如下有序关系 (以下图中所有连线均表示左下元素比右上元素小)
 b--d
 /    /
a c e

 

这时,我们把第5个元素e,插入到{a,b,d}当中的适当位置,只需比较两次,首先同b进行比较,而后同a或d进行比较,就有如图所示的四种情况
    b-d   e-b-d    b-e-d    b-d-e
    /  /        /   /      /    /       /  /
e-a c     a  c     a   c     a c
对以上任意一种情况, 总可以通过两次比较将 c 调整入由 abde 构成的有序队中 (用二分的思想)
这样处理后总共需要比较 3 + 2 + 2 = 7 次。

  • 在n<=11或n=20,21时,最少次数是log2(n!)向上取整 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值