Dee*_*ons -4 algorithm big-o time-complexity
我忘记了如何计算算法的时间复杂度.我不是在寻找一本书或30页的博客来刷新这些知识.采用以下算法,请您按照我计算时间复杂度的方式进行校正.谢谢
bool SeqSearch(int[] arr, int sValue) {
for (int index = 0; index < arr.Length-1; index++)
if (arr[index] == sValue)
return true;
return false;
}
Run Code Online (Sandbox Code Playgroud)
N1或者是它N1我忘记了我们添加它们还是我们将它们相乘?我认为我们必须添加所以最终结果,
N+N+1所以这一定是一个大哦!N.O(N)
注意:请不要将我转介到网站.SO会保持很长时间,那些有相同/类似问题的人肯定会发现这篇文章的答案很有用.我不能相信其他网站将被删除等.此外,我并不担心效率,时间复杂性,而是用于找到它的过程/步骤.
http://faculty.simpson.edu/lydia.sinapova/www/cmsc250/LN250_Weiss/L03-BigOh.pdf
我只是想把这个链接放到pdf上,这清楚地解释了如何解释什么语句和何时.就像我想要的那样.
考虑原始操作(存储器访问和算术/逻辑操作).
根据输入的大小计算它们的算法N(arr.Length在您的情况下).
然后看看操作总数是如何相关的N,是否只是某个常数或多项式N(例如N3)或对数N或指数N或其他.
如果它看起来像N+1或2*N,你应该忽略小常数,因为你主要关心的是当N大的时候发生什么以及整体行为.
这是基础知识.
这是最坏情况下的大致时间复杂度(何时sValue不在arr[]):
int index = 0; 是1
index < arr.Length-1;重复arr.Length次数是1(但可能达到,比方说,10)
index++重复arr.Length次数为1(但最多可能是3 次)
if (arr[index] == sValue)重复arr.Length次数是1(但可能达到,比方说,10)
return value; 是1
所以你有一些像1 + 1*arr.Length+ 1*arr.Length+ 1*arr.Length= 1 + 3*arr.Length+ 1的东西.你将其简化为arr.Length,因此O(N).
平均而言,您只有arr.Length2次迭代.因此,平均而言,你有1 + 1*arr.Length/ 2 + 1*arr.Length/ 2 + 1*arr.Length/ 2 + 1 = 2 + 1.5*arr.Length.再次,O(N).
但你应该真的读到这些东西.