1010折半查找的实现
时间: 2025-03-20 20:23:57 浏览: 21
### 关于二分查找算法的实现
二分查找是一种高效的查找算法,适用于有序数组中的目标值定位。以下是基于C++和Python两种常见编程语言的二分查找实现方式。
#### C++ 实现
在C++中,可以利用标准库函数`std::binary_search`或者手动编写逻辑来完成二分查找操作。以下是一个手写的二分查找示例:
```cpp
#include <iostream>
using namespace std;
int binarySearch(int arr[], int size, int target) {
int left = 0;
int right = size - 1;
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; // 查找失败返回-1
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11}; // 已排序数组
int size = sizeof(arr) / sizeof(arr[0]);
int target = 1010; // 假设要查找的目标值为1010
int result = binarySearch(arr, size, target);
if (result != -1) {
cout << "Element found at index: " << result << endl;
} else {
cout << "Element not found." << endl;
}
return 0;
}
```
上述代码实现了基本的二分查找功能,并通过比较中间元素逐步缩小范围直到找到目标值或确认不存在该值[^1]。
#### Python 实现
Python 中也可以轻松实现二分查找,既可以使用内置模块 `bisect` 提供的功能,也可以自己动手编码。下面是自定义版本的一个例子:
```python
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = left + (right - left) // 2
if arr[mid] == target:
return mid # 返回匹配项的位置
elif arr[mid] < target:
left = mid + 1 # 调整左侧起点
else:
right = mid - 1 # 调整右侧终点
return -1 # 若未发现目标值,则返回-1
if __name__ == "__main__":
sorted_list = [1, 3, 5, 7, 9, 11] # 排序后的列表
target_value = 1010 # 待查目标值
position = binary_search(sorted_list, target_value)
if position != -1:
print(f"Target value is located at index {position}.")
else:
print("The target value does not exist in the array.")
```
此脚本同样遵循了相同的原理——不断分割数据集直至锁定特定条目所在之处或是判定其缺失状态[^2]。
### 注意事项
对于给定数值如“1010”,需确保待查询序列已按升序排列;否则应先对其进行预处理(比如调用`.sort()`方法)。此外,“1010”作为较大整型可能超出某些小型集合界限,请视具体应用场景调整测试样本规模。
阅读全文
相关推荐
















