基本的查找技术:
- 线性表的查找技术
- 顺序查找
- 分块查找
- 二分查找(折半查找)
- 插值查找
- 顺序查找
- 树表的查找技术
- 二叉排序树
- 平衡二叉树
- B树(B+树、B-树等)
- 散列表的查找技术
- 开散列表
- 闭散列表
顺序查找和其他查找技术相比,缺点是平均查找长度较大,特别是当查找集合较大的时候,查找效率较低(线性增长)。然而,顺序查找的优点也很突出:算法简单+适用面广。它对表中记录的储存无任何要求,顺序和链接都可;对表中数据有序性也无要求,可以顺序可以乱序。 对比顺序查找,二分查找性能较好,但它要求线性表中的记录必须是有序的,而且必须是顺序存储的。 顺序查找和二分查找一般只能适用于静态查找。 而二叉排序树的查找与深度有关,最好情况查找效率O(logN),对数级,接近二分查找;最坏情况效率O(N),退化为顺序查找。 散列查找与上述不同,它基于计算,不需要比较。虽然实际应用中关键码集合常常存在同义词,但是在选定合适的散列函数以后,仅需要进行少量的关键码比较,因此散列函数查找性能较高。很多情况下,散列表的空间都比查找集合大,此时虽然浪费了一定的空间,但换来的是查找效率。
此处补充一点点散列(Hash)的笔记: 散列函数的设计和冲突的处理是散列查找的重难点。