我是否可以对一小部分数字进行计数排序,例如A = [7,9,12,15]来自一个巨大的数字池,我知道它只包含小数组中的数字?或者小范围总是必须是[0..k]。
我可以通过说[0..15]对数组A进行计数排序,但它没有意义。 如果A = [100,750,452]
,该怎么办?所以我猜这是可行的。 我想要一些意见。
答案 0 :(得分:0)
你的问题不是很清楚,但在这里。从你的例子A = [7,9,12,15]开始,范围为[0..15]并且需要加上大小为k = 15的空间(和另一个结果数组A [长度]。因为n(A [长度] ])是4,整体运行时间是theta(k + n)。计数排序是一个“时空权衡”算法,但如果在你的情况下使用它没有任何意义。因为,没有任何当你有k = Big-O(n)时,应该使用计数排序,这意味着你的A []中的最大值小于A []的大小。顺便说一下,我相信算法仍会对你的例子进行排序正确。