一个简单的例子是桶排序。要使桶排序工作,必须提供额外的信息。输入a1,a2,。。。,必须只由小于m的正整数组成(显然,这是可能的扩展)。如果是这样的话,那么算法很简单:保持一个名为count的数组,大小为m,初始化为所有的0。因此,count有m个单元或桶,最初是空的。在读取ai时,增加1。在读取所有输入后,扫描计数数组,打印出排序列表的表示形式。该算法取O(m +n),如果m为O(n),则总数为O(n)。
虽然这个算法似乎违反了下界,但它并不是因为它使用了比简单比较更强大的操作。通过增加适当的桶,该算法实质上是在单位时间内进行m-路比较.这类似于可扩展散列中使用的策略。这一点显然不在证明下限的模型中。
我对上段的问题
作者所说的“它使用比简单的comparisons"?
谢谢!
发布于 2011-10-01 09:47:23
count[arr[i]]比*(count + arr[i])更“强大”,因为它实际上是*(count + arr[i])。每个比较op有两个可能的值: true/false,而这个op有更大范围的值,所有可能的地址!因此,通过增加元素,[0,m]。这里的重要性和区别是:两个元素被散列为相同的数字,当且仅当它们是相同的。当然,只有当哈希元素的范围相同或小于图像时,才能实现这一点。https://stackoverflow.com/questions/7619423
复制相似问题