一尘不染

具有大部分重复元素的数组的快速排序算法?

algorithm

有什么有效的方法可以对具有少量重复元素的数组进行排序?也就是说,列表如下:

{10,10,55,10,999,8851243,10,55,55,55,10,999,8851243,10}

假设equal元素的顺序无关紧要,那么什么是最佳的最坏情况/平均情况算法?


阅读 613

收藏
2020-07-28

共1个答案

一尘不染

在实践中,您可以首先遍历数组一次,并使用哈希表对单个元素的出现次数进行计数(这是O(n),其中n =列表的大小)。然后将所有唯一元素进行排序(这是O(k
log k),其中k =唯一元素的数量),然后将其扩展回O(n)步骤中的n个元素列表,从哈希表。如果k << n,则可以节省时间。

2020-07-28