【发布时间】:2017-12-22 15:46:37
【问题描述】:
假设我有一个包含整数 (
- 案例 1:将所有数据复制到数组中并排序(假设 O(nlgn))。
- 案例 2:在将每个元素插入数组时进行排序。
哪个更安全,为什么? 哪个更快,为什么? 如果整数的数量进一步增加(> 10 ^ 9),那意味着什么?
我尝试了这两种情况,“排序后”在速度方面产生了更好的结果。我明白为什么,但是有没有更好的方法来做情况 2(目前检查输入元素与数组中的每个元素是否合适位置)。
【问题讨论】:
-
当你保持数组排序时,你应该使用二进制搜索来找到插入点。另外,你实际上是如何插入到数组中的?
-
找到合适的位置并将其他所有位置上移一个位置。
-
数字是唯一的吗?如果是这样,您可以将它们插入
SortedSet,然后在该集合上调用toArray。如果有重复,您可以使用TreeMap,但更复杂。 -
元素