栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

当数字的基数等于要排序的数字数时,为什么要使基数排序的运行时间最小化?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

当数字的基数等于要排序的数字数时,为什么要使基数排序的运行时间最小化?

在这里部分回答。第一个问题-256是基数,而32位整数中将有四个8位数字。该文章缺少的内容是,需要对数据进行一次读操作才能创建一个计数矩阵,然后将其转换为索引矩阵(或指针)。在这种情况下,矩阵为[4]
[256]。创建矩阵后,需要进行4次读/写基数排序才能对数据集进行排序。

第二个问题-对于基于数学的解释,(b / r)(n + 2 ^ r)=(b(2 ^ r(r log(2)-1)-n))/ r ^ 2的导数。当导数==
0时出现最小值(或最大值),当2 ^ r(r log(2)-1)-n = 0时出现最小值。对于n == 2 ^ 20(约100万),r〜=
16.606232的结果为O()〜=2212837。一些示例值和O():

 r   O18   233016917   222051416   222822415   230686712   2807125 8   4195328

但是,由于缓存问题,r对n的最佳值变得更小。在我的系统(Intel 2600K,3.4ghz)上,对于n = 2 ^ 20,r = 8是最快的。在n = 2
^ 24时,r = 10.67,使用3个字段10、11、11最快。在n = 2 ^ 26左右,r = 16最快。再次,由于缓存问题,性能没有很大差异,r =
8与r = 16相比,不到10%。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/616990.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号