algorithm - 在 O(n) 中对 [0,n^2 - 1] 之间的 n 个数字进行排序?

标签 algorithm sorting radix-sort

<分区>

Possible Duplicate:
An array of length N can contain values 1,2,3 … N^2. Is it possible to sort in O(n) time?

给定 n 个在 [0,n^2 -1] 范围内的数字,我们如何在 O(n) 运行中对它们进行排序时间 ?

我觉得解决方案涉及 radix sort ,但我仍然遗漏了一些东西。

n 数字是整数。

有什么想法吗?

备注:不是作业!

问候

最佳答案

实际时间将取决于您拥有的数据分布,但我会执行以下操作:

  • 制作 n 个桶。
  • 遍历每个数字并将值为 i 的元素放入桶 sqrt(i)。
  • 遍历每个桶,对桶中的每个元素进行基数排序。

关于algorithm - 在 O(n) 中对 [0,n^2 - 1] 之间的 n 个数字进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12042107/

相关文章:

c - c中的基数排序算法

c++ - 理解 8 皇后拼图的对角搜索

javascript - 使用 ng-repeat、ng-model 和复选框获取数组中的位置

algorithm - 查明 3d 空间中的特定三角形是否从给定点可见,并且可能有任意多个其他三角形

cuda - 让 CUB blockradixsort 完全在片上进行?

mysql - 在MySQL中使用自定义排序功能

python - 拉丁字母的字母生成算法?

java - 为什么我的排序算法在 for 循环第三次迭代后失败?

python - Python 中错误的输出顺序

sql - 在业务层或数据库层上使用分页对数据进行排序的最佳做法是什么?