【问题标题】:SortedSet or any Collection and then Collections.sort()?SortedSet 或任何 Collection,然后是 Collections.sort()?
【发布时间】:2014-10-22 06:55:38
【问题描述】:

我需要一组元素。我只会添加新元素并遍历所有集合。我需要对元素进行排序。但我不需要任意访问,只需要这两个操作。

什么更好(更高效),使用 SortedSet(每个添加的元素都将被排序)或使用 Collection(例如 List)并在最后一次插入排序之后(Collections.sort)?

请记住,迭代必须返回已排序的元素。

谢谢!

【问题讨论】:

  • 使用集合(例如列表)并在最后一次插入排序之后(Collections.sort)将是最佳选择性能。

标签: sorting


【解决方案1】:

Collections.sort 的时间复杂度为 nlog(n),TreeSet 也是如此。不同之处在于TreeSet 在每次插入和删除时都会对所有元素进行排序。因此,如果您想在添加所有元素后迭代已排序的集合,那么最好使用Collections.sort。 这也允许您使用允许重复元素的链表(如果需要)。

【讨论】:

    【解决方案2】:

    理论上这两种方法具有相同的复杂性:

    插入n元素,然后对列表进行排序

    n * O(1) + O(n log(n)) = O(n log(n))
    

    在 sortedList 中插入 n 元素

    n * O(log(n)) = O(n log(n))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-21
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多