栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++:二分查找

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++:二分查找

二分查找

在一个有序无重复元素的数组nums中,寻找一个target,如果找到了就返回对应的下标,如果没有找到就返回-1.

#include
#include
using namespace std;
class Solution {
	public:
		int search(vector& nums, int target) {
			int left = 0;
			int right = nums.size() - 1;//定义target在在左闭右闭的区间,即[left,right]
			while (left <= right) { //当 left == right 时,[left,right]区间依然有效,所以使用<=
				int middle = left + ((right - left) >> 1);//防止溢出,等同于(left + right)/2
				if (nums[middle] > target) {
					right = middle - 1;//target在左区间[left,middle-1]
				}
				else if (nums[middle] < target) {
					left = middle + 1;//target在右区间[middle+1,right]
				}
				else {
					return middle;//在数组中找到目标值,就返回下标
				}
			}
			return -1;//未找到目标值
		}
};
int main() {
	Solution Q;
	int  i;
	vector a(10);
	for (i = 0; i < 10; i++) {
		cin >> a[i];
	}
	int target;
	cin >> target;
	cout<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925812.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号