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