Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 将for循环除以一半,然后表现为logn的复杂性是什么?_Algorithm_Time Complexity_Big O - Fatal编程技术网

Algorithm 将for循环除以一半,然后表现为logn的复杂性是什么?

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)是什么?我已经检查过了,所以我得到了以下结果:

如果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)

        你说的有时有点不精确,但你说的是对的,
        语句1
        执行O(logn)次。@JawwadRafiq,我完全知道什么是对数复杂度,我只是不确定你的数字
        50,25,12…
        指的是什么。你不能编辑代码来完全改变问题的核心部分。这是浪费时间。问题的复杂性没有改变,但问题确实改变了-for循环的
        每个部分都是新的,
        i
        的值顺序是不同的。不过,我很高兴你有了答案。你已经删除了答案。我本来打算打勾的。对不起。真的很抱歉。若你们感觉到了,我可以把这个问题去掉。
        for(int i=n/2; i>=1 ; i=i/2)
        statement1;