时间复杂度

分析方法:

  • 只要关注最大阶级的量级即可。
  • 加法法则:总复杂度等于量级最大的那段代码的复杂度
  • 乘法法则:嵌套代码复杂度等于嵌套内外代码复杂度的乘积

不同复杂度大小比较:

在这里插入图片描述
常见复杂度分析:

1.O(1):
表示复杂为度常量级,并不是执行一行代码。
比如

int j = 8;
int j = 6;
int sum = i + j;

也是O(1)

2.O(logn),O(nlogn)

i = 1;
while (i <= n)
{
  i=i*2;
}

这个算法就是2^k=n所以可以得出,所以时间复杂度为。
如果代码修改为

i = 1;
while (i <= n)
{
  i=i*3;
}

则为3^k=n得出k=log3n,复杂度为O(log3n).
因为对数之间可以用换底公式相互转化,即即他们之间只有一个常量级,所以他们复杂度都记为O(logn)。

常见O(logn)算法有二分查找

而O(nlogn)就是logn循环执行n遍的结果。

快速排序复杂度最大时间复杂度为O(nlogn)

3.O(m+n)
这种情况下是两个加法块代码但无法判断m和n谁大时使用
在这里插入图片描述

posted @ 2019-07-06 09:51  如梦山河乀  阅读(196)  评论(0编辑  收藏  举报