查找概述
静态表查找:查找
- 顺序表查找
- 有序表查找:二分查找,插值查找,Fibonacci查找[0.618] <-- 分割点不同
- 索引查找:线性索引,树形索引,多级索引
- 稠密索引
- 分块索引:块间有序、块内无序,平均查找长度 sqrt(n)+1 ;
- 倒排索引:速度快,索引项(次关键码,记录号表),由属性值确定记录位置。压缩优化;
动态表查找:插入删除
- 二叉查找树:BST,可为空树。中序遍历有序。提高查找和插入删除速度。平均O(logn)最坏O(n);
- 平衡二叉树:AVL树,平衡因子|BF|≤1, [LL, LR, RR, RL]。平均和最坏O(logn);
- 红黑树:
- 多路查找树:MST,多个结点元素、多个孩子。所有叶子在同一层。平衡。
- m-B树:2-3树和2-3-4树是m阶B树的特例;
- B-树:
- B+树:文件系统需要。叶结点再现关键字,有序、指针域,含全部信息。查找删除插入的命中结点必须是叶结点,适于带范围的查找;
哈希查找:查找
字典集、散列表,查找O(1)。
插值查找
Fibonacci查找
二分查找
参考: