【发布时间】:2014-06-10 09:04:35
【问题描述】:
我有一个迭代器,它给了我 n 个元素。目前我将它们一一复制到一个 ArrayList 中,然后在该列表上调用 Collections.Sort() 以获得排序后的 ArrayList。这需要 nlog(n)+n 次操作。有没有更快的方法,即我可以在一定程度上使用插入操作吗?
迭代器不进行任何排序,元素几乎随机出现。
【问题讨论】:
-
你的元素是独一无二的吗?
-
尝试基数排序,它是
o(n+k)。 -
如果您的列表应该是有序列表,为什么不在插入时处理它?
-
@ChiefTwoPencils 请参阅下面我对肯特回答的评论。插入到 ArrayList 中,同时保持数组中所有其他元素的顺序,并且 Array 中的运行时间为 O(n)。
标签: java arrays sorting arraylist insert