输入是具有许多重复的n个整数的序列,使得序列中的不同整数的数量是O(log n)。设计一种排序算法(仅基于比较),在最坏的情况下使用最多O(n log log n)比较对这些序列进行排序。
有人可以解释为什么我应该使用红黑树而不是合并排序或其他排序算法。另外我如何计算大o成为n log log n。
答案 0 :(得分:1)
由于你使用的是红黑树,你在这棵树中有log(n)插入,你将只有不同的元素,并保持每个元素的计数 所以你只有log(n)元素和它们的计数。 排序你需要在树中插入n个元素,其大小应该是log(n),所以你需要整个事物的nlog(log(n)),当你拥有树时,你可以简单地按排序顺序遍历它重复每个元素k次,其中k是元素计数。