如何解决该算法的复杂度bigO是多少?
| 该算法通过一个字符串查找并尝试查找另一个字符串。我猜逻辑很简单。虽然,我需要帮助才能找到它的复杂性。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;
}
有人能帮帮我吗?
谢谢。
解决方法
在处理big-O和循环时,我问自己一个问题:
每个循环最多可以运行多少次?
在您的示例中
外循环最多运行m次。
内循环最多运行n次。
对于外循环的每次迭代,内循环最多运行“ n”次
这是否有助于澄清您的想法?
,O(n ^ 2)是该算法的最终复杂度。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。