设计一种算法,对包含重复元素的n个整数进行排序,其中不同数字的总数为k。你的算法应该在O(n + k*log(k))的时间复杂度内运行。期望的运行时间足够快。对于哪些值的k,这个算法变成线性?
我无法想出一个符合条件必须是O(n + k*log(k))的整数排序算法。我不是一个很高级的程序员,但在这个问题前,我需要想出一个针对列表中所有数字xi的算法,其中0≤xi≤m,并且该算法的时间复杂度为O(n+m),其中n是列表中的元素数量,m是列表中最大整数的值。我通过使用计数排序轻松解决了这个问题,但我在这个问题上遇到了困难。对我来说最困难的条件是ordo符号下的k*log(k)项,如果是n*log(n)代替,那么我就可以使用归并排序,对吧?但现在这不可能,所以任何想法都将非常有帮助。
提前感谢!
我无法想出一个符合条件必须是O(n + k*log(k))的整数排序算法。我不是一个很高级的程序员,但在这个问题前,我需要想出一个针对列表中所有数字xi的算法,其中0≤xi≤m,并且该算法的时间复杂度为O(n+m),其中n是列表中的元素数量,m是列表中最大整数的值。我通过使用计数排序轻松解决了这个问题,但我在这个问题上遇到了困难。对我来说最困难的条件是ordo符号下的k*log(k)项,如果是n*log(n)代替,那么我就可以使用归并排序,对吧?但现在这不可能,所以任何想法都将非常有帮助。
提前感谢!