给定一个已经按从小到大排列的整型数组data(data中没有重复元素),编写函数BinarySearch,用二分查找的方法判断data中是否存在元素key,若存在,输出key在data中的位置;否则,输出-1
时间: 2023-06-15 07:05:42 浏览: 81
以下是使用Python实现的BinarySearch函数:
```python
def BinarySearch(data, key):
left, right = 0, len(data) - 1
while left <= right:
mid = (left + right) // 2
if data[mid] == key:
return mid
elif data[mid] < key:
left = mid + 1
else:
right = mid - 1
return -1
```
该函数的参数分别为已经按从小到大排列的整型数组data和要查找的元素key。函数中使用left和right两个变量分别表示数组的左右边界,初始值分别为0和len(data)-1。然后在while循环中,不断将中间位置mid与key进行比较,如果相等,则返回mid;如果mid小于key,则将left指向mid右侧的位置继续查找;如果mid大于key,则将right指向mid左侧的位置继续查找。如果最终没有找到key,则返回-1。
以下是一个例子,演示如何使用BinarySearch函数查找数组[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]中是否存在元素7:
```python
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
key = 7
index = BinarySearch(data, key)
if index != -1:
print("元素%d在数组中的位置为%d" % (key, index))
else:
print("元素%d不在数组中" % key)
```
输出结果为:元素7在数组中的位置为6。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)