algorithm - Big O 表示法是否适用于 while(true) 循环?
问题描述
while(true) {
System.out.println("hola");
break;
}
我在这里有一个带有条件的while
循环的代码片段。true
我想知道是否可以将大 O 表示法应用于此代码片段。
解决方案
Big O 表示法是我们可以用来分析算法的工具。我们应用它的方式是计算算法执行的步骤数,将此步骤数表示为输入大小n的函数,并通过忽略常数因素和主导项来简化计数/分析。
对于您的算法,没有“输入”,因此不清楚n应该指什么,但步数也是固定的;它打印一个固定长度的字符串,然后break
语句终止循环。所以它的运行时间是O(1),即常数。
一般来说,您在算法中使用的控制流语言结构的类型并不重要(例如while
vs. for
,vs. 尾递归),因为您可以编写一个等效的算法,用不同的控制流结构做同样的事情. 等效算法将以相同数量的步骤执行,因此以这种方式更改语法不会影响分析结果。Donald Knuth 对流程图进行了第一个算法分析,任何控制流图(包括 for / )都可以转换为流程图。while(true)
break
推荐阅读
- reactjs - 反应组件没有显示,也没有给出任何错误
- java - 如何在我的 Spring Boot 代码中处理 amazon s3 存储桶的 404 错误
- java - jenkins-job-builder 在使用凭证插件时生成错误的 xml
- html - 在 IE11 中使用 flex 时菜单项重叠
- java - 如何使用解析制作一个简单的 Twitter 克隆应用程序?
- php - 为 docker docker-compose php-fpm 启用 Soap 客户端
- php - 类似类的类名和文件名的 PSR
- qliksense - qliksense : 在内部网站中嵌入 qlik 仪表板
- typescript - 我如何模拟 angular-auth-oidc 客户端以返回假数据
- mlflow - 运行初始创建后是否可以设置/更改 mlflow 运行名称?