[数据结构] 使用归并排序的外部排序使用简单选择排序进行归并时的总比较次数分最好情况和最坏情况

题目:

设有5个初始归并段,每个归并段有20个记录,采用5路平衡归并排序,若不采用败者树,使用传统的顺序选小(参看选择排序算法)的方法,总的比较次数是()次

在这里插入图片描述

原题解析:

在这里插入图片描述

我觉得这个总比较次数不一定是 4×99 呀
他这个的意思是,对于我这 99 个位置,每一次比较我都有 5 归并段中的记录可以用来选择,所以每一个位置都有 4 次比较
但是对于第 99 个位置,你五个归并段还都有记录?那不起码都 98+5 = 103 个记录了,离谱
正确的计算方法我觉得应该是,先考虑五个归并段都只剩下一个记录的情况,这个时候已经排好了 19×5 = 95 个记录,还有 5 个记录待排,倒数第五个记录可以比较 4 次,倒数第四个可以比较三次……因此最坏情况是 19×5×4+4+3+2+1 = 390 次
但是万一我的归并段有序到不行,我一开始确实每个位置比 4 次,但是我一直都用的同一个归并段中的记录,然后一直用完他,然后我对于之后的每一个归并段都是同样的情况,都是一直取同一个直到用完
直到只剩最后一个归并段的时候,由于归并段在建段的时候已经排好序了,所以剩下的那个段直接加在归并结果的末尾
所以最好情况是一直取同一个直到用完,20×4+20×3+20×2+20×1 = 200 次

所以还是这个疑惑,这题目出题人自己做过吗……

  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 42
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值