Python上的时间复杂度

0x00 大O表示法
大O符号,又称为渐进符号,是用于描述函数渐近行为的数学符号。更确切地说,它是用另一个函数来描述一个函数数量级的渐近上界。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。

关系如下:
在这里插入图片描述
常见的时间复杂度高低排序:
O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n2logn)<O(n3)

0x00 List列表

列表应该是我们用到最为频繁的对象类型了
在这里插入图片描述

0x01 Set集合

大部分set操作的时间复杂度都为O(1)
在这里插入图片描述
在这里插入图片描述

0x02 dict字典及defaultdict默认字典

可以看到大部分的dict操作也是O(1)
在这里插入图片描述

0x03 collections.deque双向队列

这个东西有点像list 但显然比list好用多了
在这里插入图片描述
当然,类似item in/not in set(list)这样的操作并没有多大的意义,在时间复杂度上任然是O(len(list))。即便set的成员对象判断上为O(1),但把list转换为set的过程已经是个取决于list长度的操作了。
内容参考于:https://www.zhihu.com/column/c_1036612424585179136

猜你喜欢

转载自blog.csdn.net/liuxiaobao666/article/details/111756925