gpt4 book ai didi

c# - Big O 会是一个嵌套的 for 循环,里面有一个 Any() 吗?

转载 作者:可可西里 更新时间:2023-11-01 03:12:49 26 4
gpt4 key购买 nike

这个问题基本上是我的 answer here 的后续问题.我真的很想说说这个算法的 Big-O 是什么,但我不确定我的说法是否完全正确。

给定两个数组:

B = [ "Hello World!", "Hello Stack Overflow!", "Foo Bar!", "Food is nice...", "Hej" ]
A = [ "World", "Foo" ]

什么是大 O:

List<string> results = new List<string>();
foreach (string test in B)
{
if (A.Any(a => test.Contains(a))
results.Add(test);
}

我相信它介于 O(n)O(n^2) 之间,因为它取决于 Any()< 在结果中的哪个位置 匹配...

最佳答案

A的长度为NB的长度为M。我们有两个极端情况:

  1. 最差:

    a => test.Contains(a) 

    在每个 a 上返回 false,因此 A.Any 必须扫描整个 A 我们有

    O(N * M) 
  2. 最好的:

    a => test.Contains(a) 

    A 的第一项返回 true,因此 A.Any 立即返回,我们有只有

    O(M)

实际复杂度介于两者之间(包括两个边界):

    [O(M)..O(M*N)]

关于c# - Big O 会是一个嵌套的 for 循环,里面有一个 Any() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38332900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com