一、时间复杂度
一、时间复杂度计算规则
1.基本操作,即只有常数项,其时间复杂度为o(1)。比如if, print 。 与规模N无关
2.顺序结构 ,按加法计算
3.循环结构, 按乘法计算
4。分支结构, 时间复杂度取最大值。
二、常见时间复杂度与大小关系
常数项 o(1) 12 线性项 o(n) 2n + 3 平方项 o(n^2) 4n^3 + 5n + 36 对数项 o(log(n)) 5logn + 8 nlog(n)阶 o(nlog(n)) 2n + 3nlog(n) + 7 立方项 o(n^3) 4n^3 + 5n^2 + 3n + 4 指数项 o(2^n) 2^n
消耗时间大小: o(1) < o(log(n)) < o(n) < o(nlog(n)) < o(n^2) < o(n^3) < o(2^n) < o(n!) < o(n^n)
三、python中列表类型不同操作的时间效率比较
1.列表构造
(1)加操作
li1 = [1, 2] li2 = [44, 55] li = li1 + li2
(2)列表生成器
li = [i for i in range(10000)]
(3)把可迭代对象直接转成列表
li = list(range(10000))
(4)往空列表里追加
li = [] for i in range(10000): li.append(li)
(5)extend
li =[] for i in range(10000): li.extend(i)
测试结果:
list(range) < 列表生成器 < append < extend < +
四、列表和字典常见操作的时间复杂度
1.列表: 索引取值 index[] o(1) 尾部追加 append() o(1) 从尾部往外弹 pop() o(1) 从指定位置往外弹 pop(i) o(n) 从指定位置插入 insert() o(n) 删除 del o(n) 2.字典复杂度 复制 copy o(n) 取 get o(1) 设值 set o(1) 删除 delete o(1) 包含 contain o(1) 迭代 iteration o(n)
五、数据结构引入
算法关注解决问题的步骤和思想
数据结构关注一堆数据如何组成。
python中字典、元组、列表、集合都是已经封装好的高级数据结构。数据结构就是对基本数据类型的封装。
程序 = 数据结构 + 算法
抽象数据类型: 把原有的基本数据类型跟这数据所支持的操作放到一起形成整体。