# 复杂度

# 时间复杂度

推导大O阶:

  1. 用常数1取代运行时间所有加法常数
  2. 在修改后的运行次数函数中,只保留最高阶项
  3. 如果最高阶项存在且不是1,则去除这个项相乘的常数 得到的就是大O阶
int count = 1;
while(count < n) {
    count = count * 2
}
1
2
3
4

由于每次count乘以2之后,距离n更近一步。也就是说有多少个2相乘后大于n就会退出循环。也就是2^x = n得到x=log2(n)。所以时间复杂度为O(logn)

# 空间复杂度

  1. 如果算法执行所需要的临时空间不随着某个变量n的大小而变化,即此算法空间复杂度为一个常量,可表示为 O(1)