Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.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
C 当我们使用while循环时,找出程序的复杂性_C_Data Structures_Time Complexity - Fatal编程技术网

C 当我们使用while循环时,找出程序的复杂性

C 当我们使用while循环时,找出程序的复杂性,c,data-structures,time-complexity,C,Data Structures,Time Complexity,以下代码的时间复杂度是多少 intfun1(intn){ int i=1; 整数计数=0; 而(ii=8 迭代四: i=8*2=>i=16 ..… ..… 等等 假设n是一个等于2k的数字。这意味着,循环将执行k次。在kth步骤: 2k=n 在两侧取对数(以2为底): 对数(2k)=对数(n) k log(2)=log(n) k=对数(n)[作为对数2(基数2)=1] 因此,时间复杂度是O(log(n))。它的log n(基数2)@Eraklon你能给我解释一下吗,这将是一个很大的帮助i在迭代的

以下代码的时间复杂度是多少

intfun1(intn){
int i=1;
整数计数=0;
而(i
所有句子都是O(1),循环会记录(n)(以2为基数)的迭代,因为每次迭代时
i
都会加倍(
i=i*2
),所以它的日志(n)(以2为基数)


您可以在这里找到更多信息。

上述代码的时间复杂度为:
O(log(n))

intfun1(intn){
int i=1;
整数计数=0;
//这里我从1运行到n
//但我每次都加倍
//i=1 2 4 8 16…n
//因此O(对数(n))
而(i
假设
n=16==2^4


在这种情况下,循环将只运行4次
==1 2 4 8==log(16)

查看代码的这一部分:

  while (i < n) {
    count++;
    i = i * 2;
  }
while(i
在每次迭代中,
i
乘以
2

最初,
i
1

迭代一:
i=1*2=>
i=2

迭代二:
i=2*2=>
i=4

迭代三:
i=4*2=>
i=8

迭代四:
i=8*2=>
i=16

..…
..…
等等

假设
n
是一个等于2k的数字。这意味着,循环将执行
k次。在
k
th步骤:

2k=n

在两侧取对数(以2为底):

对数(2k)=对数(n)

k log(2)=log(n)

k=对数(n)[作为对数2(基数2)=1]


因此,时间复杂度是O(log(n))。

它的log n(基数2)@Eraklon你能给我解释一下吗,这将是一个很大的帮助
i
在迭代的和处本质上是
2^count
。如果
n
将是1024,那么在10次迭代之后
i
也将是1024,因此循环将退出。log2(1024)=10。
  while (i < n) {
    count++;
    i = i * 2;
  }