**时间复杂度**
> 执行算法所需要的计算工作量。计算机算法是问题规模`N`的函数`F(n)`,算法的时间复杂度也因此记做`T( n ) = O( f( n ) )`
> 当`N`越大,算法执行的时间增长率与`F(n)`的增长率成正比,称作渐进时间复杂度
**时间复杂度计算公式**
>* 得出算法的计算次数公式
> * ![](https://img.kancloud.cn/ab/6c/ab6c989db8907d1c32d9646cc11f3805_850x450.png)
>* 用常数`1`来取代所有时间中的所有加法常数
> * ![](https://img.kancloud.cn/24/af/24af2d5f01b10da13d5c2acbb23e4533_849x449.png)
>* 在修改后的运行次数函数中,只保留最高阶项
>* 如果最高阶存在且不是1,则去除与这个项相乘的常数
**常见时间复杂度类型**
>[info]* 常数阶: O(1)
>* 线性阶:O(n)
>* 平(立)方阶:O(n^2) / O(n^3)
>* 特殊平方阶:O( n^2 / 2 + n/2 ) -> O(n^2)
> * ![](https://img.kancloud.cn/c6/13/c613ef596773a38e2eb62a4dfe55894e_850x550.png)
>* 对数阶:O(log2n)
> * > while($n > = 1){
> * > $n = $n/2;
> * > }
>* nlog2n阶:O(nlog2n)
>* 指数阶
>[warning] O(1) > O(log2n) > O(n) > O(nlog2n) > O(n^2) > O(n^3) > O(2^n) > O(n!) > O(n^n)
****
**空间复杂度**
> 执行算法所需要消耗的内存空间,记做`S( n ) = O( f( n ) )`
> 包含程序代码,输入数据和辅助变量所占用的空间
> 计算和表示方法与时间复杂度类似,一般用复杂度的渐进性来表示
**空间复杂度计算方式**
>* 有时用空间换取时间
>* 冒泡排序的元素交换,空间复杂度O(1)
- 简介
- PHP
- 字符串函数
- 数组函数
- 正则
- 加密函数
- 面向对象
- 关键字
- 设计模式
- 魔术方法
- 机制扩展
- 会话机制
- PHP框架
- laravel
- 问题
- swoole
- easyswoole
- workerman
- 数据库
- Sphinx
- MongoDB
- MemCache
- Redis
- 基础操作
- 数据类型
- 持久化
- 分布式锁
- 内存模型
- redis高级特性
- MySql
- 基础操作
- 数据类型
- 数据表引擎
- 锁机制
- 事务处理
- 存储过程
- 触发器
- 索引
- 关联查询
- 分析SQL语句-优化查询
- 分区分表
- 主从复制
- MySql安全性
- 网络协议
- HTTP
- header详解
- 状态码
- nginx-配置
- 逻辑算法
- 时间和空间复杂度
- 常见算法
- 数据结构
- 核心
- 进程、线程、协程
- 存储容量-计量单位
- 开发软件及配置
- 版本控制器
- Git
- Fidder
- Fidder-Android7
- 自动化部署
- Jenkins
- supervisor
- Elasticsearch
- LogStash
- RabbitMQ
- AB测试
- JAVA-JDK
- FileBeat
- PhpStorm
- Composer
- Linux
- API安全
- 高并发及大流量相关概念
- 网站优化
- WEB
- Electron