Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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_Big O_Radix Sort_Timespace - Fatal编程技术网

Algorithm 基数排序运行时

Algorithm 基数排序运行时,algorithm,big-o,radix-sort,timespace,Algorithm,Big O,Radix Sort,Timespace,如果我们有一些m>0,并且需要提供一个算法来在时间O(mn)内对0到n^m-1范围内的n整数进行排序。我的建议是: Radix-Sort(A,t) // t is the digit length for i=0 to t do Insertion-Sort A on digit i 我的论点是,上述操作将以O(mn)的形式运行,因为对于每个数字,t-插入排序将花费O(n)的时间,因为每次运行的范围很小 这是正确的建议吗?上面的空间要求是什么 谢谢。空间要求为O(m+n),因为您需要

如果我们有一些m>0,并且需要提供一个算法来在时间O(mn)内对0到n^m-1范围内的n整数进行排序。我的建议是:

Radix-Sort(A,t)  // t is the digit length
for i=0 to t
    do Insertion-Sort A on digit i
我的论点是,上述操作将以O(mn)的形式运行,因为对于每个数字,t-插入排序将花费O(n)的时间,因为每次运行的范围很小

这是正确的建议吗?上面的空间要求是什么

谢谢。

空间要求为O(m+n),因为您需要原始数字和m个桶来放置n个项目。运行时是O(mn),可以是>>n,这是基数排序的问题。在所有情况下都是O(mn),但问题是,如果m>n,则得到的值大于O(n^2)。根据写入方式的不同,在最坏的情况下,内存也可以是O(mn),因为您创建了n个数字集的m个副本来进行排序。

在对小范围的离散数字进行排序时,最好使用它,因此它保证了搜索相对于数据大小及其范围的线性(插入排序是一种比较排序,具有
O(n^2)
最坏情况的复杂性,但如果数据是按oposite方向排序的,则较小的范围可能无法帮助您进行插入排序,因为每个元素都将被移动)

使用计数排序时的空间复杂度将是
O(n+k)
,其中n是数组的大小,k是数据的范围。您可以使用相同的数组进行排序并返回结果,因为您正在对基本数据进行排序