二分法查找算法的实现
时间: 2023-08-05 15:06:58 浏览: 86
好的,以下是二分法查找算法的实现(假设要查找的元素已经按照从小到大的顺序排列好):
```python
def binary_search(arr, left, right, target):
"""
:param arr: 待查找的数组
:param left: 数组左端点
:param right: 数组右端点
:param target: 要查找的元素
:return: 如果找到则返回元素下标,否则返回 -1
"""
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
```
算法的核心思想是每次将查找范围缩小一半,直到找到目标元素或者查找范围为空。时间复杂度为 O(log n)。
相关问题
二分法查找算法的实现实验代码
二分法查找,也称为折半查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是每次都将待查找区间减半。以下是一个简单的Python实验代码示例:
```python
def binary_search(arr, target):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1 # 如果找不到目标,返回-1表示未找到
# 示例数组
sorted_array = [1, 3, 5, 7, 9, 11]
target = 7
result = binary_search(sorted_array, target)
if result != -1:
print(f"找到了,索引位置:{result}")
else:
print("没找到")
c++编程实现顺序查找算法及二分法查找算法
以下是C++实现顺序查找算法和二分法查找算法的示例代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 顺序查找算法
int seqSearch(vector<int>& nums, int target) {
for (int i = 0; i < nums.size(); i++) {
if (nums[i] == target) {
return i;
}
}
return -1; // 查找失败
}
// 二分法查找算法
int binarySearch(vector<int>& nums, int target) {
int left = 0, right = nums.size() - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (nums[mid] == target) {
return mid;
}
else if (nums[mid] < target) {
left = mid + 1;
}
else {
right = mid - 1;
}
}
return -1; // 查找失败
}
int main() {
vector<int> nums = {3, 5, 2, 8, 4, 7, 1, 6};
sort(nums.begin(), nums.end()); // 二分法查找算法需要有序表
int target = 4;
int index1 = seqSearch(nums, target); // 调用顺序查找算法
int index2 = binarySearch(nums, target); // 调用二分法查找算法
if (index1 != -1) {
cout << "顺序查找成功,目标元素下标为:" << index1 << endl;
}
else {
cout << "顺序查找失败,未找到目标元素" << endl;
}
if (index2 != -1) {
cout << "二分法查找成功,目标元素下标为:" << index2 << endl;
}
else {
cout << "二分法查找失败,未找到目标元素" << endl;
}
return 0;
}
```
以上代码中,我们使用了STL中的vector容器来存储顺序表元素,并使用sort函数对其进行排序,以便二分法查找算法能够正确执行。在main函数中,我们分别调用了顺序查找算法和二分法查找算法,查找目标元素的值为4。最后,根据返回的下标值,输出查找结果。
阅读全文