tem*_*def 6 sorting algorithm data-structures
假设您有一个魔术数据结构,它表示在最坏情况下O(1)时间内支持查找,插入和删除任何索引的线性元素序列.(我很确定在给定现代机器的内存模型的情况下,没有这样的结构是可能的,但是我们假设我们有一个它的乐趣).
我的一个朋友指出,如果你有这个数据结构,那么你可以为整数运行构建一个很酷的排序算法,运算在预期的O(n lg lg n)时间,如下所示.首先,创建一个上面提到的神奇数据结构.接下来,对于输入数组中的每个元素,使用插值搜索在预期的O(lg lg n)时间内查找该元素所属的魔术数组中的索引,然后在O(1)时间插入该元素.最后,在O(n)时间内,读出已排序的魔术数据结构.这使得n次调用O(lg lg n)插值搜索,该搜索将在O(n lg lg n)时间内运行.
我知道上面的方法不会给出最坏情况下的O(n lg lg n)时间进行排序,因为存在病态上不好的输入数组,如果在插值搜索中使用它会将搜索简化为O(n 2)时间.我的问题是,鉴于这种神奇的数据结构,假设我们只关心算法的最坏情况运行时,那么可以构建的最快整数排序算法是什么?
(这可能更适合于cstheory,但我想我先问这里,因为我在过去得到了一些很棒的算法答案.)
| 归档时间: |
|
| 查看次数: |
1422 次 |
| 最近记录: |