对于n个记录的表进行2路归并排序,整个归并排序需进行 log2 n 趟(遍),共计移动 n*log2 n 次记录。对于这句话的具体解释。

声明:本文可能存在不足,如有错误,敬请指正,礼貌交流,感激不尽。

约定:log2 n代表以2为底,n的对数

1,为什么需要进行log2 n趟?

可以这样理解:二路归并就是把两路数据合二为一,逆过来看就是将n个数据不断除以2取整,直到n变为1,所以需要log2 n趟。

如果从归并树的角度来理解的话会麻烦一点。(仔细看上面的归并树,需要进行的趟数(层数-1)就是归并树的高度减一,注意要减一才符合接下来的逻辑。假设记录共有n个,共k层,那么2^(k-1)  >= n。所以k-1>=log2 n,粗略估计就是log2 n。)

2,为什么需要移动nlog2n次记录?

 仔细看以上的图,归并排序一趟就是比较i和j所指元素的大小,选择较小者存入k所指位置。每往k中存入一个数据,我们就称发生了一次记录移动。所以每一趟都会发生n次记录的移动。总共log2 n趟,所以总共会发生n*log2 n次记录的移动。

写在最后:相关图片来源于某计算机考研机构

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值