don*_*ton 11 language-agnostic sorting algorithm performance duplicates
什么是有效的方法来排序主要有一小部分重复元素的数组?也就是说,列表如下:
{10,10,55,10,999,8851243,10,55,55,55,10,999,8851243,10}
假设equal元素的顺序无关紧要,那么什么是最坏情况/平均情况算法?
Ant*_*ima 16
在实践中,您可以首先遍历数组一次并使用哈希表计算单个元素的出现次数(这是O(n),其中n =列表的大小).然后获取所有唯一元素并对它们进行排序(这是O(k log k),其中k =唯一元素的数量),然后将其展开回O(n)步骤中的n个元素的列表,从中恢复计数哈希表.如果k << n你节省时间.