【发布时间】:2016-04-18 09:18:08
【问题描述】:
如果我有一个大小为 n 的列表,并且我知道列表中的数字将介于 1 和 2n 之间,我将如何解决最坏情况为 O(n) 的问题?
我在想,如果它在 1 和 n 之间,我可以只取该数字并将其与该数字的数组值交换 - 1 但如果有任何重复,它就不会排序。
我正在考虑对数字在 1 到 2n 之间的列表采用类似的方法,但我似乎无法弄清楚。有什么帮助吗?
【问题讨论】:
-
n 能有多大?只要 n 不比列表的长度大多少,计数排序是迄今为止最快的解决方案。
-
虽然不是一个非常Java的问题......
-
@SpiderPig n 将是列表的大小,其中 n 可以是任意大小