java - 插入时排序或复制并排序

标签 java arrays sorting arraylist insert

我有一个迭代器,它给我 n 个元素。目前,我将它们一一复制到 ArrayList 中,然后在该列表上调用 Collections.Sort() 以获得排序的 ArrayList。这需要 nlog(n)+n 次操作。有没有更快的方法来做到这一点,即我可以在一定程度上使用插入操作吗?

迭代器不进行任何排序,元素几乎随机出现。

最佳答案

如果你只有那个迭代器,我看不到更快的解决方案。请注意,nlogn+n 也是 O(nlogn)

如果你想“边插入边排序”,你需要在每次插入时进行二分查找,这也是O(nlogn)。我不认为它会比你所拥有的快得多。

TreeSet 可以让你免于二分查找的实现,但基本上是相同的逻辑。

关于java - 插入时排序或复制并排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24136930/

相关文章:

c - 当我测试书 'Introduction to Algorithms' 中的堆排序代码时出现段错误 : 11,

java - java 数据对齐和排序

Java验证: Validate an object within an object

java - 将整数插入排序数组

java - 比较对象数组中的字母数字字符串

arrays - Swift switch case 使用数组内容,语法?

java - 如何使用自定义jar覆盖现有的jar配置

java - 根据整数对 ArrayList 进行排序

java - 无法将 JSON(字符串类型)转换为 ConcurrentHashMap

c++ - 如何在 C++ 中实现自然排序算法?