首先先用一个表格大概罗列一下几种查找方法的特点
顺序查找 | 折半查找 | 二叉排序树查找 | |
查找时间复杂度 | O(n) | O(log2n) | O(log2n) |
特点 | 算法简单,但查找效率低 | 对表结构要求高,查找效率高 | 数据结构采用二叉链表表示 插入和删除只需移动指针 |
适用情况 | 不经常做插入和删除 | 有序的顺序表 | 经常做插入和删除地动态查找表 |
线性表的查找
(1)顺序查找
顺序查找比较简单直观,但也有技巧,如通过设置监视哨,免去查找过程中每一步都要检测整个表是否查找完毕。
(2)折半查找(二分查找)
这种查找方式效率较高,但必须是对于有序的顺序表
(3)分块查找
将表分为多个子表,建立索引项2记录子表最大关键字和起始地址,保证后一个子表的所有关键字均大于前一个子表中的最大关键字,
则可根据给定的key值在相应范围内的子表中查找。
树表的查找
(1)二叉排序树
1>若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值
2>若它的右子树不空,则右子树上所有结点的值均大于它的根节点的值
3>它的左右子树也分别为二叉排序树
空树也为二叉排序树
(2)平衡二叉树
满足
1>左子树和右子树的深度之差的绝对值不超过1
2>左子树和右子树也是平衡二叉树
的二叉排序树为 平衡二叉树
空树也为平衡二叉树
散列表的查找
定义:元素的储存位置和其关键字之间建立某种直接关系 ,那么在进行查找时就无需做比较或做很少次的比较,
按照这种关系直接由关键字找到相应的记录。
构造方法
1>数字分析法
2>平方取中法
3>折叠法
4>除留余数法
补充:作业中提及召回率
如上图所示 召回率R=A/(A+C)