常见的时间复杂度解析

常见的时间复杂度解析

常见的时间复杂度
① 常数阶O(1)
② 对数阶O(Log2n) --2为底数,n为对数
③ 线性阶O(n)
④ 线性对数阶O(nlog2n) --2为底数,n为对数
⑤平方阶O(n^2)
⑥立方阶O(n^3)
⑦k次方阶O(n^k)
常见时间复杂度👉小到大:
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n^2) <O(n ^3)<O(n ^k)<O(2 ^n)

1.常数阶O(1)
无论代码行有多少行,只要是没有循环等复杂结构,那这个代码的时间复杂度就是O(1)
即:该代码执行时,它消耗的时间并不随着某个变量的增长而增长

public static void main(String[] args) {
		int i = 1;
		int j = 2;
		++i;
		j++;
		int m = i + j;
	}

2.对数阶O(log2^n)
在while循环里,每次执行i = i * 2 ; i 逐渐趋近于n ;
若当执行x次后,i>2了;此时循环退出
也就是说2的x次方=n; (2^x=n)
即 x = log2n,即当执行log2n次后退出,则时间复杂度就是为O(log2n)
(时间复杂度就是执行次数)
如果 i = i * 3 就是 O(log3n)

public static void main(String[] args) {
		int i = 1;
		int n = 100;
		while(i < n) {
			i = i * 2;
		}
	}

3.线性阶O(n)
for循环里会执行n编,故消耗时间随着n的增值而增长故时间复杂度为O(n)

public static void main(String[] args) {
		int n=100;
		for(int i = 1;i <= n; i++) {
			int j=i;
			j++;
		}
	}

4.线性对数阶O(Nlog2n)
线性对数阶O(Nlog22)就是将复杂度为O(log2n)的代码执行N次
就是 N*O(log2n) 为 O(Nlog2n)

public static void main(String[] args) {
        int N =1000;
		for(int i=0;i<N;++i) {
			while(i<N) {
				i = i * 2;
			}
		}
	}

5.平方阶O(n^2)
套娃
如:两个for循环

public static void main(String[] args) {
        int n = 100;
		for(int i=0;i<n;++i) {
        	for(int j=0;j<n;++j) {
        		System.out.println("疯狂套娃");
        	}
        }
	}
  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值