C++入门算法-二分法经典题目
作者:野牛程序员:2023-09-22 07:25:03题目阅读 2510
问题描述:给定一个有序整数数组,编写一个函数来查找目标值是否存在于数组中。如果目标值存在,返回其索引;否则,返回-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
