algorithm - 为以下示例计算大“O”
问题描述
假设我有以下代码示例:
int number;
for(int i = 0; i < A; i++)
for(int j = 0; j < B; j++)
if(i == j) // some condition...
do{
number = rand();
}while(number > 100);
我想知道这个例子的大“O”。外循环是 O(A * B),但我不确定如何看待do-while
循环,它是大“O”。在最坏的情况下,它可能是一个无限循环,在最好的情况下 O(1) 并被忽略。
编辑:更新if
语句内的条件(用简单的比较替换函数调用)。
解决方案
Whilerand()
是一个随机函数,它具有指定的输出范围,我们可以说该do while
语句是 O(1)。所以,这取决于someCondition()
功能。
总复杂度为 O(A * B) * O(someCondition)。
推荐阅读
- laravel - 在自定义验证规则的消息中包含参数
- python - 如何使 mplcursors 模块仅显示折线图上绘制的点的标签
- python - Python - 单击共享点 CSS 菜单以使用 selenium 下载到 excel .ms-core-menu-title
- c# - NetworkStream.ReadTimeout 工作不准确?
- google-sheets - 引用单元格作为另一个工作簿中工作表的名称
- android - 是否可以从 GeoFirestore 查询中删除当前用户?
- javascript - 使用 webpack 将数据从页面传递到另一个页面
- reactjs - Docker + React App:如何在前端使用,API(服务器)端文件夹中保存的文件?
- python - 为什么我在一个 epoch 上的模型训练需要将近 2 个小时?
- html - 在具有多个类的嵌套 div 中访问子级