【发布时间】:2014-06-24 19:54:36
【问题描述】:
众所周知,桶排序算法非常高效:它的运行时间约为 O(N + m),其中 N 是要排序的项目数,m 是使用 fpr 排序的数组大小。问题是它只适用于有限的一组键:整数,它们填充到我们数组的大小中。
问题:有没有办法将它用于任意类型的密钥?
例如,如果我们有一些任意键,我们可以使用它的哈希码作为桶索引。当然,我们需要保留规则:if key1 > key2 then hashcode1 > hashcode2 etc
有可能实现吗?
例如,如果我们需要对字符串进行排序,很容易获得从其字符表示构建的字符串的桶索引。
【问题讨论】:
-
如果有函数
f(k) -> a[0..m](这样可以保持排序)。一个问题是桶排序不如 m >> N 那样理想。 -
要求相反的规则更实用:如果 hashcode(k1) > hashcode(k2) then k1 > k2,但这意味着你需要在桶内进行二次排序。
标签: algorithm sorting bucket-sort