用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 |