javascript - 在一个循环中编写的 2 for 循环的时间复杂度是多少
问题描述
嗨,我只是在想,如果我像下面给出的那样编写 for 循环,它的时间复杂度是多少。它将 o(n^2) 或只是 o(n)
for(var i=0,j=0;i<arr1.length || j<arr2.length;i++,j++)
{
//some code here
}
解决方案
时间复杂度为O(max(m, n)),其中m和narr1
分别是和的大小arr2
。
在您的for
循环中,您在循环之后i
和j
之后都增加。如果和 ,则for
循环停止。由于和总是具有相同的值(除了增量和之间的时刻),因此如果两者和都到达其对应列表的末尾,则它会结束。i >= arr1.length
j >= arr2.length
i
j
i
j
i
j
我们在这里假设递增i
并j
在恒定时间内运行(对于非常大的数字,这将采用O(b)和b任意大小的数字的位数),并且循环的主体仅包含指令for
也以恒定的时间运行。
推荐阅读
- wpf - 从 ViewModel 绑定 ValidationRule
- python - 当我从电影数据字典中创建字典时,如何停止生成嵌套元组?
- c++ - 使用 C++ 从 txt 文件中读取数字
- javascript - 使用网站功能时自动放大 IOS
- python - 试图从 timedelta 中减去日期
- javascript - 如何在 javascript videoplayer 中添加自动质量选择器
- azure-active-directory - 用于确定帐户是否在 Azure Active Directory 组中的 KQL 查询
- function - 如何将第一种方法返回的值传递给第二种方法
- chef-infra - Knife bootstrap 在远程windows系统上执行命令
- python - 如何在自定义 dict 子类中键入提示 .values() 的返回类型?