码迷,mamicode.com
首页 > 其他好文 > 详细

一、时间复杂度

时间:2020-03-19 21:32:11      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:get   测试   int   定位   复杂   for   时间   对象   常见   

一、时间复杂度计算规则

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中字典、元组、列表、集合都是已经封装好的高级数据结构。数据结构就是对基本数据类型的封装。

程序 = 数据结构 + 算法

抽象数据类型: 把原有的基本数据类型跟这数据所支持的操作放到一起形成整体。

 

一、时间复杂度

标签:get   测试   int   定位   复杂   for   时间   对象   常见   

原文地址:https://www.cnblogs.com/yq055783/p/12527221.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!