1. 检索结构复习(所有的设计都是 trade off
):
线性检索,数组与链表效率分析,二分查找法,对于有序数组的范围查找
[x,y]
,先二分法定位x
,缩小区间后在[x,max]
之间再二分找到y
是比较好的方式,数组可以利用内存局部性原理加快查询,小数据量下的插入操作可以使用到内存拷贝,也不会很慢。非线性结构,链表
O(N)
–> 二叉排序树(OlogN)
,是为了增加链表的检索效率。由于存在树退化的可能,引申出了 红黑树、二叉平衡树等平衡结构,Set
、Map
的底层就用到了红黑树;跳表(链表的二分查找),空间换时间的一种结构。采用分层存储的方式,缩小检索范围,