1010: 折半查找的实现

解法:

cpp 复制代码
#include<iostream>
#include<vector>
using namespace std;
void solve() {
	int n;
	cin >> n;
	vector<int> vec(n);
	for (int& x : vec) cin >> x;
	int x;
	cin >> x;
	int l = 0, r = n-1, cnt = 0;
	while (l <= r) {
		cnt++;
		int mid = l + (r - l) / 2;
		if (vec[mid] > x) 
			r = mid - 1;
		else if (vec[mid] < x)
			l = mid + 1;
		else {
			cout << mid << endl;
			cout << cnt;
			return;
		}
	}
	cout << -1 << endl;
	cout << cnt;
}
int main() {
	solve();
	return 0;
}
相关推荐
Vect__几秒前
25.12.27 算法日记——双指针
c++·算法
Swizard2 分钟前
数据不够代码凑?用 Albumentations 让你的 AI 模型“看”得更广,训练快 10 倍!
python·算法·ai·训练
wangchen_04 分钟前
C++<fstream> 深度解析:文件 I/O 全指南
开发语言·前端·c++
行稳方能走远6 分钟前
Android C++ 学习笔记
android·c++
AI题库9 分钟前
NLTK自然语言处理实战:1.3 NLTK核心数据结构
数据结构·人工智能·自然语言处理
一个专注写代码的程序媛17 分钟前
流式读取数据
java·数据结构·算法
Halo_tjn19 分钟前
Java Set集合知识点
java·开发语言·数据结构·windows·算法
郝学胜-神的一滴20 分钟前
Linux多线程编程:深入理解pthread_cancel函数
linux·服务器·开发语言·c++·软件工程
Trouvaille ~23 分钟前
【C++篇】让错误被温柔对待(下):异常高级特性与最佳实践
运维·开发语言·c++·异常·raii·编程实践·基础入门
-Xie-26 分钟前
Redis(十六)——底层数据结构(一)
java·数据结构·redis