当前位置: 首页 > 面试题库 >

java.util.stream.Stream的Big-O复杂性.sorted()

薛坚
2023-03-14
问题内容

有谁知道时间的复杂度java.util.stream.Stream<T>.sorted()是多少?


问题答案:

好吧,sorted()它本身就是O(1),因为它是一个中间操作,它不消耗流,而只是在管道中添加一个操作。

一旦终端操作消耗了流,就进行排序,或者

  • 它不执行任何操作(O(1)),因为流知道元素已经被排序(例如,因为它们来自SortedSet)
  • 或流不是并行的,并且它委托给Arrays.sort()(O(n log n))
  • 或流是并行的,并委托给Arrays.parallelSort()(O(n log n))


 类似资料:
  • 线性搜索所需时间的最坏情况是,该项位于列表/数组的末尾,或者不存在。在这种情况下,算法需要执行比较,以查看每个元素是否为所需值,假设是数组/列表的长度。 根据我对big-O表示法的理解,可以说这个算法的时间复杂度是O(n),因为最坏的情况可能发生,当我们想要保守估计“最坏的情况”时,可以使用big-O。 从堆栈溢出的许多帖子和答案来看,这种想法似乎是有缺陷的,像Big-O符号这样的说法与最坏情况分

  • 我有一个使用递归打印斐波那契级数的程序。有更好的方法,但我被要求使用递归,所以我不得不这样做。 这是程序: 我知道这对于斐波那契级数来说真的是一种糟糕的方法,从上面可以清楚地看出,当项超过35时,程序需要很多时间才能完成。 我看了这个答案,不明白他们是怎么解决的,但看起来 fibo(int n)的时间复杂度为O(2^n) 我可能完全错了,但我只想: 这个完整程序的时间复杂度是多少,简要解释一下您是

  • 必须分析算法的效率和准确性以比较它们并为某些场景选择特定算法。 进行此分析的过程称为渐近分析。 它指的是以数学计算单位计算任何操作的运行时间。 例如,一个操作的运行时间计算为f(n),并且可以用于另一个操作,其计算为g(n2)。 这意味着第一操作运行时间将随着n的增加而线性增加,并且当n增加时第二操作的运行时间将指数地增加。 类似地,如果n非常小,则两个操作的运行时间几乎相同。 通常,算法所需的时

  • 以下代码的时间复杂度是多少? 在嵌套循环中,如果外循环1需要O(1)时间,内循环2需要O(logn)时间,内循环3需要O(n)。那么总的tc是O(1)O(logn)O(n)=O(nlogn)。这是真的吗? 请解释一下。

  • Redis zrank。 返回存储在key处的排序集中成员的排名,分数从低到高排序。排名(或指数)是基于0的,这意味着得分最低的成员排名为0。 为什么复杂度是O(log(N))?成员按分数排序,但zank按成员查询。 我找到了一些可能是答案的东西。 A.zset由ziplist实现时 大小小于128 每个成员的大小小于64字节 所以,ziplist的大小很小,所以这不是我讨论的问题。 B.当zse