我忘记了如何计算算法的时间复杂度。我不是在寻找一本书或 30 页的博客来刷新这些知识。采用以下算法,请您纠正我计算时间复杂度的方式。谢谢
线性搜索
bool SeqSearch(int[] arr, int sValue) {
for (int index = 0; index < arr.Length-1; index++)
if (arr[index] == sValue)
return true;
return false;
}
使用的步骤和逻辑
- 循环遍历所有元素 -
N
- 每个指数的比较 -
1
或者是N
- 返回真或假 -
1
最后
我忘了我们是把它们加起来还是相乘?我以为我们必须添加,
N+N+1
所以这一定是一个大哦!的 N。O(N)
问题
- 我是乘以每个步骤所花费的时间还是将它们相加
- 对于比较,无法确定何时结束。那么需要多少时间(我假设 1 因为它可以在第一个索引处找到,N 否则作为最后一个索引)
- 分配和回报是恒定的时间 1 ?
注意:请不要让我访问网站。SO 会持续很长时间,有相同/相似问题的人肯定会发现这篇文章的答案很有用。我无法相信其他网站何时会被关闭等。我也不在乎效率、时间复杂性,而是用于查找它的过程/步骤。
资源
http://faculty.simpson.edu/lydia.sinapova/www/cmsc250/LN250_Weiss/L03-BigOh.pdf
我只是想把这个链接放到 pdf 中,它清楚地解释了如何解释什么陈述以及何时解释。就像我想要的一样。