技术文摘
C++ 与 Python 中二分查找的实现方法
C++ 与 Python 中二分查找的实现方法
在编程领域,二分查找是一种高效的查找算法,适用于已排序的数组或列表。下面分别介绍在 C++ 和 Python 中二分查找的实现方法。
在 C++ 中,二分查找通常通过循环来实现。以下是一个简单的示例代码:
#include <iostream>
int binarySearch(int arr[], int l, int r, int x) {
while (l <= r) {
int m = l + (r - l) / 2;
if (arr[m] == x)
return m;
if (arr[m] < x)
l = m + 1;
else
r = m - 1;
}
return -1;
}
int main() {
int arr[] = {2, 5, 8, 12, 16, 23, 38, 56, 72, 91};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 23;
int result = binarySearch(arr, 0, n - 1, x);
if (result!= -1)
std::cout << "元素在数组中的索引为: " << result << std::endl;
else
std::cout << "数组中未找到该元素" << std::endl;
return 0;
}
在上述 C++ 代码中,binarySearch 函数接受一个已排序的整数数组 arr 、左右边界 l 和 r 以及要查找的目标值 x 。通过不断比较中间元素与目标值的大小,调整搜索范围,直到找到目标值或确定不存在。
而在 Python 中,二分查找可以通过递归或循环来实现。下面是一个使用循环的实现方式:
def binary_search(arr, x):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == x:
return mid
elif arr[mid] < x:
low = mid + 1
else:
high = mid - 1
return -1
arr = [2, 5, 8, 12, 16, 23, 38, 56, 72, 91]
x = 23
result = binary_search(arr, x)
if result!= -1:
print("元素在数组中的索引为:", result)
else:
print("数组中未找到该元素")
无论是 C++ 还是 Python,二分查找的核心思想都是通过不断缩小搜索范围,快速定位目标元素。这种算法的时间复杂度为 O(log n),相较于顺序查找的 O(n),在处理大规模数据时具有明显的优势。
掌握二分查找的实现方法,对于提高程序的效率和性能有着重要的意义。在实际应用中,根据具体的需求和语言特点,选择合适的实现方式。
TAGS: 编程语言对比 Python 二分查找 C++ 二分查找 二分查找实现
- SQL Server 连接失败及 SQL Server 2008R 无法登录的解决办法(1814\\18456)
- PostgreSQL 数组类型的操作与特点深度解析
- SQL2008 卸载问题(重启计算机失败、找不到卸载程序)解决之道
- SQL Server 2008 安装失败的解决方案:彻底卸载旧版本
- 简单后台与数据库交互的登录注册[含 SQL 注入处理与 MD5 加密]
- Redis 中利用 ZSet 实现延时队列的示例代码
- Centos7 离线安装部署 PostgreSQL 详细流程
- PostgreSQL 数据库用于构建用户画像系统的方法
- Redis 缓存与数据库一致性问题的解决之道
- Redis 中哈希结构(Dict)的实现方式
- Redis 中 Geospatial 地理位置功能的应用详解
- Windows 版 PostgreSQL 借助 pg_upgrade 实现大版升级的操作指南
- PostgreSQL DBA 常用 SQL 大全
- SpringBoot 融合 Mybatis-plus 与 Redis 达成投票功能
- Redis 底层数据结构 SkipList 的实现机制