time-complexity - 使用 Big-O 表示法的该算法的时间复杂度
问题描述
我必须找到我创建的伪代码的时间复杂度,并使用 Big-O 表示法指定它。问题是当我在嵌套的 for 循环中有一个 if 语句时,我不知道如何计算它。
这是我的伪代码,括号中的是操作数:
Algorithm largestProduct(A)
Input array A
Output largest product value of two elements in array A, the values and their indices
index1 ← 0 (1)
index2 ← 0 (1)
n ← A length (1)
max ← 0 (1)
for i ← 0 to n-1 do (n)
for j ← i + 1 to n do (n^2)
if max < A[ i ] * A[ j ] then (?)
max ← A[ i ] * A[ j ]
index1 ← i
index2 ← j
return max, A[index1], index1, A[index2], index2
预先感谢您的帮助。
解决方案
由于语句内部的操作if
及其条件不影响迭代次数并且它们是单个操作(常量),因此您可以将if
语句视为O(1)
.
嵌套for
循环确实会进行O(n^2)
迭代,因此,有恒定数量的操作运行O(n^2)
时间,使其成为O(n^2)*O(1)=O(n^2)
整体。
推荐阅读
- heroku - 我怎样才能在heroku上滚动我自己的自动缩放?
- android - DisplayMetrics.xdpi 和 DisplayMetrics.ydpi 是否会根据屏幕方向而变化
- python - 如何将存储为字典键的数据帧连接到单个数据帧中?
- cobol - 从 cobol 中的字符串中删除特定值
- r - 在 Windows 上的 R 中使用 nvBLAS?
- java - jul-to-log4j-bridge “mvn package” 以“package org.apache.log4j.plugins 不存在”结尾 编译错误
- java - 即使观察到目标数据库记录已更新,Statement.executeUpdate() 仍返回 0
- c# - ASP.NET Core Web API 验证错误处理
- ubuntu - 为什么我在创建反应原生应用程序时遇到意外的 EOF 错误文件
- java - 将复杂的 while 循环重构为 Java 8 流