Java OJ 时间复杂度

本文测试机cpu,测试基于JDK8
在这里插入图片描述

1. O ( n ) O(n) O(n)

首先测试 O ( n ) O(n) O(n)的运行次数,1次乘法 + 2次加法 + 1次判断

public class Main{
    public static void main(String[] args) {
        long xx = 1;
        long index = 1;
        long start = System.currentTimeMillis();

        while(true){
            xx = xx * 2 + 1;
            index++;
            long end = System.currentTimeMillis();
            if(end - start > 1000){
                break;
            }
        }
        System.out.printf("%d\n", index);

    }
}
次数数量级
1s73748800 1 0 8 10^8 108
2s191526261 1 0 9 10^9 109
5s520590145 1 0 9 10^9 109

次数会浮动,数量级大致相同

2. O ( n 2 ) O(n^2) O(n2)

package com.caohongchuan;

public class Main{
    private static long n = 65000;
    public static void main(String[] args) {
        long xx = 1;

        long start = System.currentTimeMillis();

        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                xx = xx * 2 + 1;
            }
        }

        long end = System.currentTimeMillis();

        System.out.printf("%d\n", end - start);

    }
}
次数数量级
1s30000 1 0 4 10^4 104
2s40000 1 0 4 10^4 104
5s65000 1 0 4 10^4 104

总结

1 s 1s 1s 大致在 1 0 8 10^8 108 数量级上。
常见复杂度

复杂度数量级
O ( l o g n ) O(logn) O(logn) 1 0 1 0 7 10^{10^7} 10107
O ( n ) O(n) O(n) 1 0 8 10^8 108
O ( n l o g n ) O(nlogn) O(nlogn) 1 0 6 10^6 106
O ( n 2 ) O(n^2) O(n2) 1 0 4 10^4 104
O ( n 2 l o g n ) O(n^2logn) O(n2logn) 1 0 3 10^3 103
O ( n 3 ) O(n^3) O(n3) 1 0 2 10^2 102
O ( 2 n ) O(2^n) O(2n)16 以下
O ( n ! ) O(n!) O(n!)11以下
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值