算法的时间复杂度和空间复杂度

一、时间复杂度
1、常数阶: 执行恒定时间的算法,O(1)。

2、线性阶:

<?php
    for ($i=0; $i < n; $i++) { 
        # 到这里执行一次为 O(1);
    }
?>

循环 n 次,O(n)。

3、对数阶:

<?php
    $i = 1;
    while ($i <= n) {
        //时间复杂度 O(1),
        //而每次i*2之后离结束更近一分。
        //也就是 2^x = n,
        //循环的时间复杂度为 log2(n)。
        $i = $i * 2; 
    }
?>

4、平方阶:

<?php
    for ($i=0; $i < n; $i++) { 
        for ($j=0; $j < n; $j++) { 
            // ① 所以就是 O(n * n)。
            // ② 但当外循环和内循环的n值不一样是就会变成 O(m*n),
            // ③ 又如果内层循环是j=i开始,
            // 它的时间复杂度就是n+(n-1)+(n-2)+...+1
            // =[n(n+1)]/2 = n^2/2 + n/2
            // O(n^2)
            # 每次执行到这儿是 O(1);
        }
    }
?>

TO SUMMERISE ,
这里写图片描述
即: 常数阶 < 对数阶 < 线性阶 < 平方阶。

二、空间的复杂度

一般会牺牲空间上的开销来换取时间。

算法的空间复杂度通过计算算法所需的存储空间来实现。

一般情况下,一个程序在机器上执行,除了需要储存程序本身的指令、常数、变量和输入数据外,还需要存储对数据操作的存储单元。

而如果输入数据所占空间只取决于问题本身,和算法无关,这样只需要分析该算法在实现是所需的辅助单元即可。
若算法执行师所需的辅助空间相对于输入数据量而言是常数,则称此算法为原地工作,空间复杂度为 O(1)。

P.S. 最近心不静,浮躁的要飞起来,理应勿忘初心,才会心想事成。INNER PEACE , NEVER FORGET WHERE YOU SET OFF.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值