作者简介:

       姜海强:闷骚码农,互联网行业摸爬滚打数余载,先后担任中国体育直播TV主程、网信集团先锋支付架构师、奇虎360服务器端资深开发。热爱技术,喜欢分享,热衷领域:PHP/Golang语言、面向对象设计模式、Redis、Yaf、Yii2、微服务等。

视频课程

yaf+yar微服务-腾讯课堂
yaf+yar微服务-51CTO学院
CSDN学院

Github

个人主页
swoole-boot
roach
roach-orm

QQ群:

姜海强的QQ群

公众号:

360tryst公众号

1. 数据结构

提到算法不能不提数据结构,数据结构就是数据元素按照一种或多种关系的集合,按照逻辑结构划分,可以分为:

数据结构

1.1 集合

集合是由一堆无序的、相关联的,且不重复的数据元素组成的集合。

集合

1.2 线性结构

线性结构是数据元素之间存在“一对一”关系的线性关系的集合。

线性结构

1.3 树

树是数据元素之间存在”一对多“关系的集合。

树

1.4 图

图是数据元素之间存在“多对多”关系的集合。

图

1.5 算法

1.5.1 算法的五个特性

算法的五个特性

  • 输入:算法具有零个或多个输入
  • 输出:算法至少有一个或多个输出
  • 有穷性:算法必须能抄在执行有限个步骤之后终止
  • 确定性:算法的每个步骤都有明确的含义,不会出现二义性
  • 可行性:算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限次数完成

1.5.2 好算法的四个因素

好算法的四个因素

1.6 时间复杂度

执行次数 函数阶 非正式术语
40 O(1) 常数阶
5n+45 O(n) 线性阶
2n<sup>2</sup> +4n+1 O(n<sup>2</sup> ) 平方阶
8log<sub>2</sub>n+30 O(logn) 对数阶
5n+2nlog<sub>2</sub>n+20 O(nlogn) nlogn阶
2n<sup>3</sup>+n<sup>2</sup> +4n+5 O(n<sup>3</sup> ) 立方阶
2<sup>n</sup> O(2<sup>n</sup> ) 指数阶

QQ群:

姜海强的QQ群

公众号:

360tryst公众号