while循环之间的Big-O表示法

时间:2015-08-19 23:48:12

标签: python big-o

帮助找到以下代码的大写符号:

<li ng-repeat="curso in ctrl.list| removeAcentos: ctrl.input ">
    ... <!-- display items from ctrl.list that match ctrl.input -->
</li>

我认为它是i = n while i > 0: k = 2 + 2 i = i // 2 ,因为n被分配然后循环。这是对的吗?

2 个答案:

答案 0 :(得分:2)

考虑这一点的简单方法(可以用作一般方法)如下:

  • i的初始值为n
  • 一旦我达到0,代码将停止循环(因此,当i为1时,最后一次迭代将执行)
  • 执行了任意次数的迭代(调用该数字c),i的值为

     ((n / 2) / 2) / ... )     = n / (2 ^ c) 
         ^ divide by 2 c times 
    

因此,在循环结束时,我们需要(n / (2 ^ c)) = 1。求解c会给我们c = logn

因此,复杂性很大的是O(logn)。 (也就是说,假设n是一个整数而不是浮点数。)

答案 1 :(得分:0)

循环重复可以将n除以2的次数。那就是O(log n)。