algorithm - 用 O(n) 中的值范围对数组进行排序

标签 algorithm

有一个数组A[1, ..., n] ,它知道每个 1 <= l <= n然后 A[l] in {1,2,...,n^5} .

我怎样才能找到一个在 O(n) 中对它进行排序的算法?

最佳答案

想象在 Base-n 系统中表示 A[i] 中的值。然后每个数字变成一个五位数的 n 进制数,这意味着您可以使用 Radix Sort 的五个应用程序对整个数组进行排序。 ,“基数”为 n。

按如下方式计算数字 k 中每个“数字”x 的值:

dx = (k/(n x)) % n

其中/表示整数除法。

关于algorithm - 用 O(n) 中的值范围对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44119945/

相关文章:

PHP 生成具有百分比折扣的折扣代码

c# - 两个 BST 叶子之间的节点之和

algorithm - 如何解决这个问题(选择间隔)

algorithm - 增量检测 DAG 中的支配者

algorithm - 带括号的公式解析器

python - 在字符串中查找最重复(不是最常见)序列的算法(又名串联重复)

c++ - 可变嵌套循环

algorithm - 当前 Stack 的大小是多少?

algorithm - 生成随机点以构建程序线

java - HeapSort 算法索引从 1 到 n,实际代码必须从 0 到 n-1