顺序查找法
- 概述:从表的一端开始,逐个进行记录的关键字和给定值的比较,若找到一个记录的关键字与给定值相等,则查找成功;若整个表中的记录均比较过,仍未找到关键字等于给定值的记录,则查找失败。顺序查找的方法对于顺序存储和链式存储方式的线性表都适用。
- 缺点:与其他查找方法相比,顺序查找方法在n值较大时,其平均查找长度较大,查找效率较低。
- 优点:但这种方法也有优点,那就是算法简单且适应面广,对查找表的结构没有要求,无论记录是否按关键字有序排列均可应用。
折半查找法
- 概述:又称为二分查找法,查找过程令处于中间位置记录的关键字和给定值比较,若相等,则查找成功;若不等,则缩小范围,直至新的查找区间中间位置记录的关键字等于给定值或者查找区间没有元素时(表明查找不成功)为止。
- 前提:要求待查元素表为有序表,例如按递增排序。
- 查找过程:设查找表的元素存储在一维数组r[1…n]中,那么在表中的元素已经按关键字非递减排序的情况下,进行折半查找的方法是:首先比较key值与表r中间位置(下标为mid)的记录的关键字,若相等,则查找成功。若key>r[mid].key,则说明待查记录只可能在后半个子表r[mid+1…n]中,下一步应在后半个子表中再进行折半查找;若key<r[mid].key, 说明待查记录只可能在前半个子表r[1…mid-1]中,下一步应在r的前半个子表中进行折半查找,这样通过逐步缩小范围,直到查找成功或子表为空时失败为止。
例题
- 采用折半查找算法有序表{7,15,18,21,27,36,42,48 ,51,54,60,72}中寻找值为 15 和38,
分别需要进行()次元素之间的比较。
A、3和1 B、 3和2 C、 4和1 D、4和3
- 解析:本题考查折半查找算法的基础知识。 在这道题中,一共有12个数字组成的有序表,首先使用15进行查找,第一次和36进行比较,因为12/2=6,所以要和第6个数字进行比较,结果15比36小,那么接下来和前一个子表进行比较,第二次是和18进行比较,结果还是比18小,类似地,第三次和7进行比较,结果15比7大,最后和15比较,一共查了4次。
- 同样地,38第一次和36比较,结果比36大,第二次和51比较,结果比51小,第三次和42比较,结果还是比42小,那么就没有更小的了,所以比较了3次,结果查无此元素。
- 故本题的正确答案为D