数据结构基础篇(3)--算法时间复杂度的常用算法

一、常数阶

        int sum =0,n=100;   /*执行一次*/
        sum=(1+n)*n/2;      /*执行一次*/
        System.out.print(sum);  /*执行一次*/

由于T(n)=O(f(n)),此时f(n)=3,根据之前推导大O阶的方法,第一步就是把常数3改为1,没有最高想,所以它的时间复杂度为O(1)。、

二、线性阶

int i,n=100;
        for(i=0;i<n;i++){
          //时间复杂度为O(1)的程序
        }

它的循环的时间复杂度为O(n)。

三、对数阶

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

由于每次count乘以2之后,和n就更接近,意思就是说,有多少个2相乘后大于n,则会退出循环。
由2^x=n 得到x=log2(n),即以2为底的n,时间复杂度记为O(logn).

四、平方阶

int i,n=100;
        for(i=0;i<n;i++){
            for(int j=i;j<n;j++){
                //时间复杂度为O(1)的程序
            }
        }

当i=0时,内循环执行了n次,当i=1时,执行了n-1次……当i=n-1时,执行了一次
n+(n-1)+(n-2)+…+1=n(n+1)/2
用我们推导大O阶的方法,最终保留了最高项,所以它的时间复杂度为O(n^2)。

五、常见的时间复杂度表

执行次数函数
12O(1)
2n+3O(n)
3n^2+2n+1O(n^2)
5log2(n)+20O(logn)
2n+3nlog2(n)+19O(nlogn)
6n^3+2n^2+3n+4O(n^3)
2^nO(2^n)

文章只是作为自己的学习笔记,借鉴了网上的许多案例,如果觉得阔以的话,希望多交流,在此谢过…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值