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;
}
相关推荐
fengfuyao98515 小时前
竞争性自适应重加权算法(CARS)的MATLAB实现
算法
散峰而望15 小时前
C++数组(二)(算法竞赛)
开发语言·c++·算法·github
leoufung15 小时前
LeetCode 92 反转链表 II 全流程详解
算法·leetcode·链表
靠沿15 小时前
Java数据结构初阶——Collection、List的介绍与ArrayList
java·数据结构·list
wyhwust15 小时前
交换排序法&冒泡排序法& 选择排序法&插入排序的算法步骤
数据结构·算法·排序算法
利刃大大15 小时前
【动态规划:背包问题】完全平方数
c++·算法·动态规划·背包问题·完全背包
wyhwust16 小时前
数组----插入一个数到有序数列中
java·数据结构·算法
笑非不退16 小时前
C# c++ 实现程序开机自启动
开发语言·c++·c#
im_AMBER16 小时前
Leetcode 59 二分搜索
数据结构·笔记·学习·算法·leetcode
gihigo199816 小时前
基于MATLAB的IEEE 14节点系统牛顿-拉夫逊潮流算法实现
开发语言·算法·matlab