如果99%的元素相同,可以在O(n)中对数组进行排序吗?

时间:2016-06-03 10:27:25

标签: arrays runtime

因为兴趣而问;

假设数组中元素的比较需要O(n), 是否有可能在O(n)中对数组进行排序,如果元素相同则为99%?

如果数组中的元素出现超过n / 2次怎么办? 还有O(n)可能吗?

1 个答案:

答案 0 :(得分:2)

否:一旦找到99%的时间内发生的元素,您仍需要对数组的其余部分进行排序,其中包含n / 100个元素。我们知道基于比较的排序算法的大O的下限是n log n - 因此,为了对剩余的n / 100个元素进行排序,我们不能比O更好(n / 100 log(n / 100) )),仍然是O(n log n)。