铲斗分类分析

时间:2011-10-01 09:39:56

标签: algorithm

  

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

     

虽然这个算法似乎违反了下限,但事实证明   它不是因为它使用比简单操作更强大的操作   比较。通过递增适当的桶,算法   基本上在单位时间内进行m方式比较。这是类似的   用于可扩展散列的策略。这显然不在   已证明下限的模型。

关于上段的问题

  1. 作者的意思是“它使用比简单比较更强大的操作”?
  2. 通过递增适当的存储桶,算法如何执行m-way比较?那么什么是m-way比较?
  3. 上面的bucket排序策略如何与可扩展散列相关?任何人都可以给出一个可扩展散列的例子吗?
  4. 谢谢!

1 个答案:

答案 0 :(得分:0)

  1. count[arr[i]]更强大'然后比较,因为它是 实际上是*(count + arr[i])。每个比较op有2个可能 值:true / false,而此op具有更广泛的值范围, [所有可能的地址!]因此它更“强大”
  2. 通过增加元素,算法“知道”后来有多少 在这个'桶'中的元素,以及后来:只是'溢出' 桶的内容。作者的m-way比较意味着, 我假设与m个可能的输出进行“比较”,如上所述。
  3. 这基本上是一个哈希,你将元素哈希到范围 [0,m]。这里的重要性和区别是:两个要素是 当且仅当它们相同时,哈希值相同。这个 当然,只有使用相同的哈希元素才能实现 [或更少]范围然后是图像。