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;
}
相关推荐
前端小L11 分钟前
贪心算法专题(十):维度权衡的艺术——「根据身高重建队列」
javascript·算法·贪心算法
方得一笔11 分钟前
自定义常用的字符串函数(strlen,strcpy,strcmp,strcat)
算法
Xの哲學38 分钟前
Linux SMP 实现机制深度剖析
linux·服务器·网络·算法·边缘计算
Thera77739 分钟前
状态机(State Machine)详解:原理、优缺点与 C++ 实战示例
开发语言·c++
linux开发之路1 小时前
C++高性能日志库开发实践
c++·c++项目·后端开发·c++新特性·c++校招
wuk9981 小时前
使用PCA算法进行故障诊断的MATLAB仿真
算法·matlab
额呃呃1 小时前
二分查找细节理解
数据结构·算法
无尽的罚坐人生1 小时前
hot 100 283. 移动零
数据结构·算法·双指针
刻BITTER1 小时前
在TRAE 上安装PlatformIO
c++·单片机·嵌入式硬件·arduino
永远都不秃头的程序员(互关)1 小时前
C++动态数组实战:从手写到vector优化
c++·算法