第一次写blog 对有序内容实现二分查找(day1)

计算机软件开发 2024-10-8 14:00:38 156 0 来自 中国
用C++语言实现 使用macos体系 xcode创建新C++项目 乐成运行 输出target的下标index为2
#include <iostream>#include <vector>#include <algorithm>using namespace std;int binary_search(vector<int>& nums, int target) {    int left = 0, right = nums.size() - 1;    while (left <= right) {        int mid = left + (right - left) / 2;        if (nums[mid] == target) {            return mid;        } else if (nums[mid] > target) {            right = mid - 1;        } else {            left = mid + 1;        }    }    return -1;}int main() {    vector<int> nums = {1, 3, 5, 7, 9, 11};    int target = 5;    int index = binary_search(nums, target);    if (index == -1) {        cout << "Target not found" << endl;    } else {        cout << "Target found at index " << index << endl;    }    return 0;}初次打仗了容器的概念 vector是stl尺度库中的一种管理动态数组的容器 num.size是它的成员函数
格式为:
#include <vector>using namespace std;vector<元素范例> 容器名;在这个代码中,left和right分别体现当前搜刮范围的左右端点,初始时left为0,right为数组长度减1。在while循环中,盘算出当前搜刮范围的中央位置mid,然后将nums[mid]与目的元素target举行比力。如果nums[mid]便是target,说明找到了目的元素,返回mid;如果nums[mid]小于target,说明目的元素在mid的右侧,将搜刮范围缩小为mid+1到right;如果nums[mid]大于target,说明目的元素在mid的左侧,将搜刮范围缩小为left到mid-1。
当left大于right时,说明搜刮范围为空,目的元素不存在于数组中,此时返回-1
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-21 20:16, Processed in 0.158331 second(s), 33 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表