本文主要围绕效率开始说起
常见算法效率复杂度
O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)
python列表内置操作方法的复杂度如下
常见的顺序表存储方式如下,python则采用的是分离式结构,表头只存储最大容量值,元素个数和存储区的物理地址,
存储区的结构示意图,其中存储区域涉及的主要知识点为扩容问题,python采用的是容量加倍的方式,但当元素超过50000个时,其便会改变策略,以避免不必要的浪费
扩充的两种策略
- 每次扩充增加固定数目的存储位置,如每次扩充增加10个元素位置,这种策略可称为线性增长
- 特点:节省空间,但是扩充操作频繁,操作次数多。
- 每次扩充容量加倍,如每次扩充增加一倍存储空间。
- 特点:减少了扩充操作的执行次数,但可能会浪费空间资源。以空间换时间