当前位置:首页题目 > 正文

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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击