Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 基数排序时间_Algorithm_Performance_Sorting_Radix Sort - Fatal编程技术网

Algorithm 基数排序时间

Algorithm 基数排序时间,algorithm,performance,sorting,radix-sort,Algorithm,Performance,Sorting,Radix Sort,我正在准备本周的一个考试,我遇到了一个复习题,问 范围为0的两千万个正整数。999999999将按LSD基数排序。比较使用基数0的性能。9999和基数0。9展示你的 工作 我知道基数排序的时间是θ(d(k+n));其中d=位数k=基数大小,n=记录数 我知道小数基数是θ(8(10+20000000)),对吗 千根是什么?θ(3(1000+20000000))?运行时是O(d(n+k))是对的。这可能有助于明确地计算出d和k之间的关系。如果你处理的是从0到U的数字,那么每个数字中的基数k位数将是Θ

我正在准备本周的一个考试,我遇到了一个复习题,问

范围为0的两千万个正整数。999999999将按LSD基数排序。比较使用基数0的性能。9999和基数0。9展示你的 工作

我知道基数排序的时间是θ(d(k+n));其中d=位数k=基数大小,n=记录数

我知道小数基数是θ(8(10+20000000)),对吗


千根是什么?θ(3(1000+20000000))?

运行时是O(d(n+k))是对的。这可能有助于明确地计算出d和k之间的关系。如果你处理的是从0到U的数字,那么每个数字中的基数k位数将是Θ(logk U)=Θ(logu/logk)。这意味着运行时更适合O(logu(n+k)/logk)

在您的例子中,k与n相比非常小,因此此运行时将具有for O(n log U/log k)

您声称运行时为Θ(8(10+20000000))和Θ(3(1000+20000000))有点奇怪。记住,Θ表示法谈论的是长期增长率,而不是单个值,因此以这种方式插入值是没有意义的。然而,你的基本论点是正确的。从基数10到基数10000在基数的数量级上增加了3倍,因此,如果基数较大,则该算法的速度应该大约快三倍


也就是说,还有很多其他因素可能会在实践中打乱这个时机。引用的局部性在执行大量数组操作的算法的运行时起着很大的作用,随着bucket数量的增加,局部性会逐渐变差。这实际上可能会使较大的基本排序比较小的基本排序慢,因为即使轮数较少,但由于缓存效应,每轮所需的时间更长。如果没有尝试过这一点,我敢打赌,在实践中很有可能会发生这种情况。

数数你的数字,它不是千基数。那么它应该是θ(2(10000+20000000))?那个基数叫什么?米里亚斯,如果你想吹嘘一点希腊语。或者一万个,如果你想被理解的话。所以我可以说,使用一万个基数大约是使用十进制基数的4倍?看起来是这样(对于足够大的数据样本)。但是,由于实现细节、缓存局部性。。。