首页 > 解决方案 > 为以下示例计算大“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语句内的条件(用简单的比较替换函数调用)。

标签: algorithmbig-o

解决方案


Whilerand()是一个随机函数,它具有指定的输出范围,我们可以说该do while语句是 O(1)。所以,这取决于someCondition()功能。

总复杂度为 O(A * B) * O(someCondition)。


推荐阅读