2.编写php代码实现在数组中查找某元素是否存在;使用二分查找法;(递归方式)
时间: 2024-05-27 08:10:42 浏览: 14
<?php
function binarySearch($arr, $low, $high, $x) {
if ($high >= $low) {
$mid = floor(($low + $high) / 2);
if ($arr[$mid] == $x) {
return true;
} elseif ($arr[$mid] > $x) {
return binarySearch($arr, $low, $mid - 1, $x);
} else {
return binarySearch($arr, $mid + 1, $high, $x);
}
}
return false;
}
$arr = array(1, 3, 5, 7, 9, 11);
$x = 7;
if (binarySearch($arr, 0, count($arr) - 1, $x)) {
echo "$x 存在于数组中";
} else {
echo "$x 不存在于数组中";
}
?>
相关问题
给出在有序数组a中查找数据元素×是否存在的递归算法。
可以使用二分查找的递归算法来查找数据元素×是否存在于有序数组a中。具体实现方法如下:
1. 定义递归函数binarySearch(a, low, high, x),其中a为有序数组,low和high分别为数组的起始和结束位置,x为要查找的数据元素。
2. 如果low > high,则说明数组中不存在数据元素x,返回-1。
3. 否则,计算数组中间位置mid = (low + high) / 2。
4. 如果a[mid] == x,则说明数据元素x存在于数组中,返回mid。
5. 如果a[mid] > x,则说明数据元素x可能存在于数组的左半部分,递归调用binarySearch(a, low, mid-1, x)。
6. 如果a[mid] < x,则说明数据元素x可能存在于数组的右半部分,递归调用binarySearch(a, mid+1, high, x)。
7. 返回递归调用的结果。
最终的递归算法实现如下:
int binarySearch(int a[], int low, int high, int x) {
if (low > high) {
return -1;
}
int mid = (low + high) / 2;
if (a[mid] == x) {
return mid;
} else if (a[mid] > x) {
return binarySearch(a, low, mid-1, x);
} else {
return binarySearch(a, mid+1, high, x);
}
}
使用二分查找算法查找出数组中的最大值,数组你自己定义,用python代码去实现
以下是使用二分查找算法在数组中查找最大值的 Python 代码:
```python
def binary_search_max(arr, low, high):
# 如果 low 和 high 相等,说明只有一个元素,直接返回该元素
if low == high:
return arr[low]
# 如果只剩下两个元素,返回其中较大的那个
if high == low + 1:
return max(arr[low], arr[high])
# 计算数组的中间位置
mid = (low + high) // 2
# 递归查找左半部分的最大值和右半部分的最大值
left_max = binary_search_max(arr, low, mid)
right_max = binary_search_max(arr, mid + 1, high)
# 返回左右半部分中的最大值
return max(left_max, right_max)
# 测试代码
arr = [1, 3, 5, 7, 9, 8, 6, 4, 2]
print("数组:", arr)
print("最大值:", binary_search_max(arr, 0, len(arr)-1))
```
运行结果:
```
数组: [1, 3, 5, 7, 9, 8, 6, 4, 2]
最大值: 9
```