改写二分搜索算法
时间: 2023-07-19 17:10:21 浏览: 140
设a[0:n-1]是一个已排好序的数组。请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素的位置I和大于x的最大元素位置j
二分搜索算法是一种高效的查找算法,它可以在有序数组中查找指定元素。该算法的基本思想是将数组分为两个部分,然后判断目标元素在哪个部分,再在该部分中继续查找,直到找到目标元素或者确认不存在。
以下是改写后的二分搜索算法的代码实现:
```
int binarySearch(int arr[], int left, int right, int target) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
这段代码的改动并不大,主要是将递归的实现方式改为了迭代的实现方式。在每一次循环中,计算中间值的方式也稍作改动,以避免在极端情况下出现整型溢出的问题。
阅读全文