思路
在有序队列中,将查找的关键字和查找范围内的中间元素进行比较,会出现如下三种情况:
- 关键字和该中间元素相等,则查找成功。
- 如果关键字比该中间元素大,则将整个查找范围的后半部分作为新的查找范围,重新进行折半查找算法。
- 如果关键字比该中间元素小,则将整个查找范围的前半部分作为新的查找范围,重新进行折半查找算法。
- 中间元素不等于关键字且查找范围小于等于1,则说明查找失败。
代码实现
1 |
|
折半查找性能分析
查找算法性能的指标就两个:
- 查找成功时,平均的查找长度,折半查找平均查找长度为:((n+1)/n)*(log(n+1)-1)
- 查找失败时,需要比较的次数, 折半查找最多比较次数为:log(n)+1
注意:折半查找为有序表查找算法,它不适用于无序的顺序表和链表中。