使用基数排序对整数数组排序的时间复杂度

问题描述 投票:0回答:1

使用quicksort对长度为n(= 10 ^ 6)的1到10 ^ 9的整数数组进行排序将给我们O(n * log2 n)时间。但是,如果我们应用以n为基数的基数排序,则只需对其进行4次传递。

我的理解基数排序复杂度为O((n + b)* logb(k)),其中k是最大值,可以写成n ^ c。O((n + b)* logb(n ^ c))以b等于n,O((n + n)* c)= O(2c * n)

且quicksort为(n * log2 n)基数排序为(2c * n)

max k(列表中的整数)为10 ^ 9也n ^ c = k因此c = 2。

并且对于n = 10 ^ 6,log2 n等于20。

排序快速排序采用20n步,而基数排序采用4n步。

在这种情况下,quicksort表现良好吗?建议使用基数排序。

sorting time-complexity quicksort radix-sort
1个回答
0
投票

使用给定的参数,基数排序将花费2遍。相比之下,以256为基数的基数排序将需要4​​次通过才能对32位整数进行排序(如果为无符号,则范围为0到2 ^ 32-1)。在理想情况下,Quicksort为O(n log2(n)),它更像O(n log1.4(n))(大部分时间分配30%/ 70%)。

© www.soinside.com 2019 - 2024. All rights reserved.