当前位置: 首页 > 知识库问答 >
问题:

java.util.stream.stream.sorted()的复杂度很高

武彭薄
2023-03-14

有人知道java.util.stream.stream .sorted() 的时间复杂度是多少吗?

共有1个答案

方和顺
2023-03-14

好吧,sorted()本身是O(1),因为它是一个中间操作,不使用流,只是向管道添加一个操作。

一旦终端操作使用了流,就会发生排序,并且

  • 它不执行任何操作(O(1)),因为流知道元素已经排序(例如,因为它们来自SortedSet)
  • 或流不是并行的,它委托给arrays.sort()(O(n log n))
  • 或者流是并行的,它委托给arrays.parallelsort()(O(n log n))
 类似资料:
  • 主要内容:时间复杂度,空间复杂度《 算法是什么》一节提到,解决一个问题的算法可能有多种,这种情况下,我们就必须对这些算法进行取舍,从中挑选出一个“最好”的。 算法本身是不分“好坏”的,所谓“最好”的算法,指的是最适合当前场景的算法。挑选算法时,主要考虑以下两方面因素: 执行效率:根据算法所编写的程序,执行时间越短,执行效率就越高; 占用的内存空间:不同算法编写出的程序,运行时占用的内存空间也不相同。如果实际场景中仅能使用少量的内

  • 有人能帮我了解一下这个代码片段的时间和空间复杂性吗?请参考leetcode问题-单词中断II。给定一个非空字符串s和一个包含非空单词列表的字典单词dict,在s中添加空格来构造一个句子,其中每个单词都是有效的字典单词。返回所有这些可能的句子。

  • 例如,我有点混淆这两个术语——合并排序、heapsort和插入排序的辅助空间是O(1),而合并排序、插入排序和heapsort的空间复杂度是O(n)。 所以,如果有人问我合并排序、堆排序或插入排序的空间复杂度是多少,我应该告诉他们O(1)还是O(n)? 另外,请注意,在选择排序的情况下,我已经阅读了它的空间复杂度是 O(1),这是辅助空间。 那么,使用“就地计算”的算法是否有可能,对于这些算法,我

  • 问题内容: Go编程语言中此循环的计算复杂度是多少? 并以线性时间(重新分配内存和每个追加拷贝的一切),或在固定的时间里操作(比如在许多语言方式矢量类是implemnted)? 问题答案: Go编程语言规范说,如果需要,内置函数会重新分配。 附加并复制切片 如果s的容量不足以容纳附加值,则append分配一个新的,足够大的切片,使其既适合现有slice元素又适合附加值。因此,返回的切片可以引用不同

  • 问题内容: 在最坏的情况下,对单个对象的查找操作OR 是正确的吗?那么,对于元素查找将是? 问题答案: 是的,但这实际上是最坏的情况:如果中的所有元素都具有相同的哈希码(或导致相同存储桶的哈希码)。使用正确编写的且正态分布的密钥样本,查找为O(1)。

  • 问题内容: 在Python中,您可以得到两个集合的交集: 有人知道这种相交()算法的复杂性吗? 编辑: 此外,有人知道Python集背后的数据结构是什么吗? 问题答案: 答案似乎是一个搜索引擎查询。您也可以使用此直接链接到python.org的“时间复杂性”页面。快速总结: 编辑:正如雷蒙德在下面指出的那样,“最坏情况”的情况不太可能发生。我最初将其包括在内是为了彻底,我将其留给下面的讨论提供背景