在线性时间范围[0,2n]之间对n个数字进行排序

时间:2016-10-11 15:28:58

标签: algorithm sorting

  

假设列表 L 包含 n 已知的数字   范围[0,2 n ]。设计一种排序 L 的算法   在线性时间。

我不太清楚如何解决这个问题。我相信基数排序是O( dn )。

2 个答案:

答案 0 :(得分:0)

看起来像家庭作业。在一些伪代码中有关此算法的内容:

  • 构造一个大小为range_t range_t::without_front(n) const
  • 的标志数组
  • 列表中的Forall号码2n,存储x
  • 如果flag[x] = true为真,则i = 0到2n打印i

所有迭代循环都由 O(n)绑定。

答案 1 :(得分:0)

如下所示:

  1. 定义一个用0值初始化的大小为2n的数组。
  2. 对于L中的每个项目,请增加arr[L_i]
  3. 循环返回数组,返回值为>的所有项目0
  4. 通过稍微修改步骤3,可以轻松修改此算法以处理L中的非不同值。