- 4
- 0
- 约6.81千字
- 约 7页
- 2023-08-06 发布于上海
- 举报
二分查找算法详解
二分查找算法,是一种在有序数组中查找某一特定元素的搜索算法。注意两点:
有序:查找之前元素必须是有序的,可以是数字值有序,也可以是字典序。为什么必须有序呢? 如果部分有序或循环有序可以吗?
数组:所有逻辑相邻的元素在物理存储上也是相邻的,确保可以随机存取。算法思想:
搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束; 如果某一特定元素大于或者小于中间元素,则在数组大 于或小于中间元素的那一半中查找, 而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索 算法每一次比较都使搜索范围缩小一 半。
这里我们可以看到:
如果查找值和中间值不相等的时候,我们可以确保可以下次的搜索范围可以缩小一半,正是由于所有元素都是有序的这一先决条件
我们每次查找的范围都是 理应包含 查找值的区间,当搜索停止时,如果仍未查找到,那么此时的搜索位置就应该是 查找值 应该处于的位置,只是该值不在数组中而已
算法实现及各种变形:
非降序数组 A, 查找 任一个 值==val 的元素,若找到则返回下标位置,若未找到则返回-1
非降序数组 A, 查找 第一个 值==val 的元素,若找到则返回下标位置,若未找到则返回-1 (类似:查找数组中元素最后一个 小于 val 值 的位置)
非降序数组 A, 查找 最后一个值==val 的元素,若找到则返
原创力文档

文档评论(0)