有什么有效的方法可以对具有少量重复元素的数组进行排序?也就是说,列表如下:
{10,10,55,10,999,8851243,10,55,55,55,10,999,8851243,10}
假设equal元素的顺序无关紧要,那么什么是最佳的最坏情况/平均情况算法?
equal
在实践中,您可以首先遍历数组一次,并使用哈希表对单个元素的出现次数进行计数(这是O(n),其中n =列表的大小)。然后将所有唯一元素进行排序(这是O(k log k),其中k =唯一元素的数量),然后将其扩展回O(n)步骤中的n个元素列表,从哈希表。如果k << n,则可以节省时间。