C++入门算法-二分法经典题目
作者:野牛程序员:2023-09-22 07:25:03题目阅读 2562
问题描述:给定一个有序整数数组,编写一个函数来查找目标值是否存在于数组中。如果目标值存在,返回其索引;否则,返回-1。
样例输入:有序整数数组 nums = [-1, 0, 3, 5, 9, 12],目标值 target = 5
样例输出:3
#include <iostream>
#include <vector>
using namespace std;
// 二分查找函数
int binarySearch(const vector<int>& nums, int target) {
int left = 0;
int right = nums.size() - 1;
while (left <= right) {
int mid = left + (right - left) / 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 = {-1, 0, 3, 5, 9, 12};
int target = 5;
int result = binarySearch(nums, target);
if (result != -1) {
cout << "目标值 " << target << " 存在于数组中,索引为 " << result << endl;
} else {
cout << "目标值 " << target << " 不存在于数组中" << endl;
}
return 0;
}野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

