对于具有不确定迭代次数的while循环,我似乎无法合理地说明大O符号的合理性。
在我的个人项目代码中,我有一个包含所有0的列表。然后,我实现了一个while循环,该循环将在0到9之间生成一个随机整数。如果随机数索引处的列表中的值为0,则该值被写入1,而while循环退出。否则,将再次生成一个随机数,并重复该过程。
不过,我不完全确定这会有多复杂。例如,如果在算法的9次迭代之后,除了索引9之外,列表中的每个值都是1,如果随机数生成器恰好没有生成数字9,比如说99次迭代,那么它将在99 +9迭代之后退出。最坏的情况不是O(无穷大)吗?我不认为这是可能的,但我想我应该问,因为我不确定。
我的教科书和在线资源似乎并没有提供像这样的例子太多的洞察力。我确信最好的情况是O(1),但对于一般情况和最坏情况,我有点不确定。
我发现了一个类似的问题,有着同样的前提。这里是伪码,其中n是任意大小的整数:
sample_found = false
while(!sample_found) {
if (rand(0,n) == 0) {
sample_found = true
}
}
在最坏的情况下,这将是无限的,对吗?我也不确定普通的案子。
发布于 2022-01-17 10:18:10
https://stackoverflow.com/questions/70734653
复制