【问题标题】:bucket sort analysis桶排序分析
【发布时间】:2011-10-01 09:39:55
【问题描述】:

一个简单的例子是桶排序。为了桶排序工作,额外 信息必须可用。输入 a1, a2, . . . , 必须的 仅由小于 m 的正整数组成。 (明显地 对此的扩展是可能的。)如果是这种情况,那么 算法很简单:保存一个名为 count 的数组,大小为 m,即 初始化为全 0。因此,count 有 m 个单元格或存储桶,它们是 最初是空的。读取 ai 时,将 count[ai] 加 1。毕竟 读取输入,扫描计数数组,打印出一个表示 的排序列表。这个算法需要 O(m + n);如果 m 是 O(n),那么 总数是 O(n)。

虽然这个算法似乎违反了下界,但事实证明 不是因为它使用了比简单的更强大的操作 比较。通过增加适当的桶,算法 本质上是在单位时间内进行一次 m 路比较。这是相似的 可扩展散列中使用的策略。这显然不在 下界已被证明的模型。

我对上述段落的问题

  1. 作者所说的“它使用比简单比较更强大的操作”是什么意思?
  2. 通过增加适当的桶,算法如何进行m路比较?顺便问一下什么是m-way比较?
  3. 上述桶排序策略与可扩展哈希的关系如何?任何人都可以举一个可扩展散列的例子吗?

谢谢!

【问题讨论】:

    标签: algorithm


    【解决方案1】:
    1. count[arr[i]] 比比较更“强大”,因为它是 实际上*(count + arr[i])。每个比较操作有 2 种可能 值:真/假,而此操作具有更广泛的值范围, [所有可能的地址!],因此它更“强大”
    2. 通过增加元素,算法“知道”以后有多少 在这个“桶”中的元素,然后:只是“溢出” 桶的内容出来。作者的意思是m路比较, 如上所述,我假设是与 m 个可能的输出的“比较”。
    3. 这基本上是一个散列,你将你的元素散列到范围 [0,m]。这里的重要性和区别是:两个元素是 当且仅当它们相同时,散列到相同的数字。这 当然,只有当您使用相同的散列元素时才能实现 [或小于] 范围,然后是图像。

    【讨论】:

      猜你喜欢
      • 2019-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多