Algorithm 将for循环除以一半,然后表现为logn的复杂性是什么?
这个循环的最坏情况(大o)是什么?我已经检查过了,所以我得到了以下结果: 如果N=100,它将把N除以一半,50,然后,它将开始logn行为,如50,25,12,6,3,1。同样的事情在下面详细阐述:Algorithm 将for循环除以一半,然后表现为logn的复杂性是什么?,algorithm,time-complexity,big-o,Algorithm,Time Complexity,Big O,这个循环的最坏情况(大o)是什么?我已经检查过了,所以我得到了以下结果: 如果N=100,它将把N除以一半,50,然后,它将开始logn行为,如50,25,12,6,3,1。同样的事情在下面详细阐述: 如果N=100=>N/2=>N=50 N=50=>50,25,12,6,3,1 从上面的结果中,我知道,第一行给出了N/2,也就是O(N),下一行的行为类似于Log(N)。可能发生两件事 它可以是O(logn) 它可以小于O(logn) 这件事其实我想问。如果问题是O(n),一半的问题也是O(n
- 它可以是O(logn)
- 它可以小于O(logn)
- 循环的划分不会影响总大小。它将保持O(n)
- 之后,i=i/2将给出复杂性O(logn)
- 这件事其实我想问。如果问题是O(n),一半的问题也是O(n)。如果问题是O(logn),一半的问题也是O(logn)
它的意思,
语句1
执行O(logn)次。@JawwadRafiq,我完全知道什么是对数复杂度,我只是不确定你的数字50,25,12…
指的是什么。你不能编辑代码来完全改变问题的核心部分。这是浪费时间。问题的复杂性没有改变,但问题确实改变了-for循环的每个部分都是新的,i
的值顺序是不同的。不过,我很高兴你有了答案。你已经删除了答案。我本来打算打勾的。对不起。真的很抱歉。若你们感觉到了,我可以把这个问题去掉。
for(int i=n/2; i>=1 ; i=i/2)
statement1;