Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting SortedSet或任何集合,然后是Collections.sort()?_Sorting - Fatal编程技术网

Sorting SortedSet或任何集合,然后是Collections.sort()?

Sorting SortedSet或任何集合,然后是Collections.sort()?,sorting,Sorting,我需要一组元素。我只会添加新元素并遍历所有集合。我需要对元素进行排序。但我不需要任意访问,只需要这两个操作 更有效的方法是使用SortedSet,每个添加的元素都将被排序,或者使用集合,例如List,最后一次插入排序后,使用Collections.sort 请记住,迭代必须返回已排序的元素 谢谢 理论上,两种方法具有相同的复杂性: 插入n个元素,然后对列表进行排序 n * O(1) + O(n log(n)) = O(n log(n)) 在分类列表中插入n个元素 n * O(log(n)) =

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


更有效的方法是使用SortedSet,每个添加的元素都将被排序,或者使用集合,例如List,最后一次插入排序后,使用Collections.sort

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


谢谢

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

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

n * O(1) + O(n log(n)) = O(n log(n))
在分类列表中插入n个元素

n * O(log(n)) = O(n log(n))
Collections.sort的时间复杂度为nlogn,TreeSet的时间复杂度相同。不同之处在于,TreeSet在每次插入和移除时都有一个对所有元素进行排序的开销。因此,如果您希望在添加所有元素后迭代排序的集合,那么最好使用Collections.sort。
这还允许您使用链表,如果需要,链表允许重复元素。

使用集合,例如列表,在最后一次插入排序之后,Collections.sort将是性能方面的最佳选项。