前言

最近开始学习算法,python书籍为 《python-data-structure-cn》

引自书中:python 的设计者在实现列表数据结构的时候有很多选择。每一个这种选择都可能影响列表操作的性能
。为了帮助他们做出正确的选择,他们查看了最常使用列表数据结构的方式,并且优化了实现,以便使得最常见的操作非常快
。当然,他们还试图使较不常见的操作快速,但是当需要做出折衷时,较不常见的操作的性能通常牺牲以支持更常见的操作。

常见操作及时间复杂度

pop() 、pop(i) 、sort()测试

* pop()随着列表规模变大呈平稳趋势
* 而pop(0)呈现一元一次线性回归

 sort()相对于 pop(0)时间消耗大大增加

总图

code
# coding:utf-8 import timeit from timeit import * from matplotlib import
pyplot import matplotlib.pyplot as plt pop_nlogn = [] popzero_nlogn = []
sort_nlogn = [] pop = Timer("test_list.pop()", "from __main__ import
test_list") popzero = Timer("test_list.pop(0)", "from __main__ import
test_list") sort = Timer("test_list.sort()", "from __main__ import test_list")
x = list(range(1000,4000,1000)) for i in x: test_list = list(range(i))
pop_nlogn.append(pop.timeit(number = 100)) test_list = list(range(i))
popzero_nlogn.append(popzero.timeit(number = 100)) test_list = list(range(i))
sort_nlogn.append(sort.timeit(number = 100)) plt.plot(x,
pop_nlogn,marker='o',label='pop_nlogn') plt.plot(x,
popzero_nlogn,marker='o',label='popzero_nlogn') plt.plot(x,
sort_nlogn,marker='o',label='sort_nlogn') plt.legend() # 让图例生效 plt.xlabel('n
size') # X轴标签 plt.ylabel("time use") # Y轴标签 plt.show()
 

 

 

 

技术
©2019-2020 Toolsou All rights reserved,
python 读取 xls文件CSS实现loading小动画vue中数据改变 界面不更新问题JavaSwing实现简单连连看小游戏2019PHP面试题(持续更新中)PHP如何在Vue中使用Echarts可视化库Vue SpringBoot 进行Excel下载c语言实现《学生管理系统》Thinkphp在添加、修改、删除数据时,自动更新Cache缓存的方法WEB前端,初识vue.js