实现对单调递增的整型序列中,进行折半查找。用折半查找法找出一个数是数组中第几个元素,如果找到,则返回其下标,如果找不到,则返回-1
时间: 2024-09-12 10:12:37 浏览: 49
折半查找法(也称为二分查找法)是一种在有序数组中查找特定元素的搜索算法。它将时间复杂度从线性搜索的O(n)降低到了O(log n)。对于单调递增的整型序列,折半查找的过程如下:
1. 首先确定查找范围,初始时左边界left为0,右边界right为数组长度减一。
2. 计算中间位置mid,公式为:mid = (left + right) / 2。
3. 比较中间位置的元素与要查找的数:
- 如果中间位置的元素等于要查找的数,则返回该元素的位置,即mid。
- 如果中间位置的元素小于要查找的数,则说明要查找的数在中间元素的右侧,因此将左边界left调整为mid + 1。
- 如果中间位置的元素大于要查找的数,则说明要查找的数在中间元素的左侧,因此将右边界right调整为mid - 1。
4. 重复步骤2和3,直到left > right,表示未找到,返回-1。
下面是实现折半查找的伪代码示例:
```pseudo
function binarySearch(array, target):
left = 0
right = array.length - 1
while left <= right:
mid = (left + right) / 2
if array[mid] == target:
return mid
else if array[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
```
注意:在实际编程时,为了避免除以2可能出现的浮点数误差,通常会使用位运算符来计算中间位置,即 `mid = left + (right - left) / 2`。
阅读全文