Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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
Algorithm 什么';这个算法的复杂度是多少?_Algorithm_Complexity Theory_Big O - Fatal编程技术网

Algorithm 什么';这个算法的复杂度是多少?

Algorithm 什么';这个算法的复杂度是多少?,algorithm,complexity-theory,big-o,Algorithm,Complexity Theory,Big O,此算法查找一个字符串并尝试查找另一个字符串。我想逻辑很简单。不过,我需要帮助找到它的复杂性 int find(string mString, string lookUp) { int i, z, j, m = mString.size(), n = lookUp.size(), broken = 0, st = 0; for(j = 0, i = 0; i < m; i++) { if(mString[i] == lookUp[j])

此算法查找一个字符串并尝试查找另一个字符串。我想逻辑很简单。不过,我需要帮助找到它的复杂性

int find(string mString, string lookUp)
{
    int i, z, j, m = mString.size(), n = lookUp.size(), broken = 0, st = 0;
    for(j = 0, i = 0; i < m; i++)
    {
        if(mString[i] == lookUp[j])
        {
            if(broken)
            {
                //go back and see if we're on the good path
                broken = 0;
                for(z = 0; z < j; z++)
                {
                    if(broken) break;
                    if(mString[i-z] == lookUp[j-z])
                        broken = 0;
                    else
                        broken = 1;
                }
                if(!broken) st = i - j + 1;
            }
            if(j + 1 != n)
                j++;
        }
        else
            broken = 1;
    }
    return st;
}
int find(字符串mString,字符串查找)
{
int i,z,j,m=mString.size(),n=lookUp.size(),break=0,st=0;
对于(j=0,i=0;i
谁能帮帮我吗


谢谢。

在处理大O和循环时,我问自己一个问题:

每个循环最多可以运行多少次

以你为例,

  • 外部循环最多运行,`m`次
  • 内部循环最多运行,`n`次
  • 对于外部循环的每次迭代,内部循环最多运行'n'次

  • 这有助于澄清你的想法吗?

    O(n^2)是这个算法的最终复杂性。

    到目前为止你有什么?好吧,现在我认为最坏的情况是O(m*n),尽管它可能只是O((m-n)*n)。我只是搞糊涂了。你忘了带
    z
    for
    循环。这就是为什么我搞糊涂了……不过如果我再三考虑,O(m*n+n),那应该是最坏的情况。你的意见是什么?你为什么感到困惑?什么是不清楚的?(我这样问是因为,如果你能指出什么让你困惑,我们可以帮你更多。)