编程实现二分查找算法
c++ 二分查找算法是一种高效的搜索算法,适用于有序数组。它通过将待查找区间逐渐缩小一半来定位目标值。下面是C++中实现二分查找算法的示例代码:#include <iostream>
#include <vector>
int binarySearch(const std::vector<int>& nums, int target) {
int left = 0;
int right = nums.size() - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums == target) {
return mid;
} else if (nums < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;// 目标值不存在
}
int main() {
std::vector<int> nums = {1, 3, 5, 7, 9};
int target = 5;
int result = binarySearch(nums, target);
if (result != -1) {
std::cout << "目标值 " << target << " 在索引 " << result << " 处找到了。" << std::endl;
} else {
std::cout << "目标值 " << target << " 不存在。" << std::endl;
}
return 0;
}
在上述代码中, binarySearch函数接受一个有序整数数组nums和目标值target作为参数。它使用两个指针left和right来表示待查找区间的左右边界。
在每次循环中,算法计算中间位置mid ,并将其与目标值进行比较。如果nums等于目标值,则找到了目标值,返回mid 。
如果nums小于目标值,则目标值可能在mid的右侧,因此将left更新为mid + 1 。
如果nums大于目标值,则目标值可能在mid的左侧,因此将right更新为mid - 1 。
循环继续直到left大于right ,此时目标值不存在于数组中,返回 -1。
在main函数中,我们定义了一个有序数组nums和目标值target ,然后调用binarySearch函数进行查找。最后根据返回值判断是否找到目标值,并输出相应的结果。
以上是二分查找算法在C++中的实现。希望对你有帮助!
页:
[1]