请实现有重复数字的有序数组的二分查找。 输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。
区块链毕设网qklbishe.com为您提供问题的解答
请实现有重复数字的有序数组的二分查找。
输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。
#include <iostream> #include<vector> using namespace std; //二分查找 int BinarySearch(vector<int> arr, int target, int n) { if (target > arr[n - 1]) //如果target大于最后一个数那么也就大于 { return n + 1; } int left = 0; int right = n ; int mid = left + (right - left) / 2; while (left < right) { if (arr[mid] >= target) { right = mid; } else { left = mid + 1; } mid = (left + right) / 2; } return mid + 1; } int main() { int n = 0; //数组长度 int v = 0; //查找值 cin >> n >> v; vector<int> arr; arr.resize(n); for (int i = 0; i < n; i++) { cin >> arr[i]; } cout << BinarySearch(arr, v, n); }
54:27
以上就是关于问题请实现有重复数字的有序数组的二分查找。 输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训