二分查找实现 C++

C++二分查找算法的实现 二分查找算法通过将目标值与数组中间元素进行比较,从而确定目标值在数组的左半部分还是右半部分。如果中间元素大于目标值,说明目标值在数组的左半部分,可以将查找范围缩小为左半部分;如果中间元素小于目标值,则说明目标值在数组的右半部分,可以将查找范围缩小为右半部分。通过不断缩小查找范围,最终可以找到目标值或确定目标值不存在于数组中。通过将目标值与数组中间元素进行比较,并根据比较结果缩小查找范围,最终可以快速定位目标值的位置。本文提供了C++中二分查找算法的实现示例,并解释了算法的原理和关键步骤。 阅读详情

二分查找递归实现

# include<iostream>
using namespace std;
int binary_search(int arr[],int low , int high, int key)
{
	""" 通过递归二分查找 查找元素"""
	if(low<=high){
		int mid = low + (high-low)/2;
		//若元素在中间 
		if(arr[mid] == key)
			return mid;
		// 若元素比中间的数小 那么它只可能在左边的子数组中 则可另high = mid -1
		elif (arr[mid] > key)
			return binary_search(arr,low,mid-1,key);
        //否则 只可能在右边的子数组汇总 则可令low = mid+1
        return binary_search(arr,mid+1,high,key);  
	}
	// 该元素不在数组中
	return -1;
}
int main()
{
	int arr[] = { 2, 3, 4, 10, 40 };
	int x = 10;
	int n = sizeof(arr) / sizeof(arr[0]);
	int result = binary_search(arr, 0, n - 1, x);
	(result == -1) ? cout << "Element is not present in array"
		: cout << "Element is present at index " << result;
	return 0;
}

二分查找迭代实现

#include<iostream>
using namespace std;
int binary_search(int arr[], int low, int high, int key)
{
	//查找某元素是否存在于数组中 若存在,则返回下标;否则返回-1
	while (low <= high) {
		// 检查key是否在中间
		int mid = low + (high - low) / 2;
		if (arr[mid] == key)
			return mid;
		// 如果x大于arr[mid] 则low = mid+1;否则high=mid-1
		if (arr[mid] < key)
			low = mid + 1;
		else
			high = mid - 1;
	}
	return -1;
}
int main()
{
	int arr[] = { 2, 3, 4, 10, 40 };
	int x = 10;
	int n = sizeof(arr) / sizeof(arr[0]);
	int result = binary_search(arr, 0, n - 1, x);
	(result == -1) ? cout << "Element is not present in array"
		: cout << "Element is present at index " << result;
	return 0;
}
C++实现二分查找算法 该算法的时间复杂度为O(logn),其中n是数组的大小。由于每次迭代都将搜索范围减半,因此二分查找算法具有非常高的效率。二分查找算法是一种高效的搜索算法,常用于有序数组中查找特定元素的位置。该算法将目标值与数组的中间元素进行比较,并根据比较结果缩小搜索范围,直到找到目标值或确定目标值不存在。如果中间元素等于目标值,则返回中间元素的索引。循环结束时仍未找到目标值,则返回-1,表示目标值不存在于数组中。作为参数,并返回目标值在数组中的位置。函数进行查找,并根据返回的结果输出相应的提示信息。 阅读详情

相关推荐

上海交大计算机保研面试 2026:3类专项计划与10个联培方向深度解析

本文深度解析2026年上海交通大学计算机保研面试的3类专项计划与10个联培方向,包括区块链技术、智能计算系统和网络安全专项,以及蚂蚁科技、苏州智研院等联培基地。文章详细介绍了各专项的核心课程、硬件资源和就业去向,为计算机专业学生提供全面的申请策略和职业发展建议。

weixin_31528001的博客 397

C++ 中,二分查找的 API, lower_bound 和 upper_bound 的用法

总是记混这两个查找方法,今天写篇博客 MARK 一下。 lower_bound 查找的为 第一个大于等于当前查找数的位置; upper_bound 查找的为 第一个严格大于当前查找数的位置。 若查找元素不存在,则两个方法返回同样的位置。 #include <bits\stdc++.h> using namespace std; int main(){ vec...

ontheway12138的博客 859

给硬件工程师的UCIe软件配置入门:从寄存器表到实战调试,一篇讲透

本文为硬件工程师提供UCIe软件配置的全面指南,从寄存器表解析到实战调试技巧,涵盖链路训练、错误排查等关键环节。通过详细代码示例和分层诊断法,帮助工程师快速掌握UCIe寄存器访问机制,提升异构集成开发效率。

weixin_30268921的博客 313

c++中内置函数qsort(快速排序)和bsearch(二分查找)详解

c/c++中qsort(快速排序)和bsearch(二分查找算法) 前两天自己写代码的时候,在程序中对于一些简单的排序和查找算法都得自己去写,个人觉得非常麻烦,然后我看官方的api手册偶然发现了在其他标准库函数中有封装好了的快速排序算法和二分查找算法,然后经过本人的一中午的时间的硬肝,终于把其用法给搞懂了,现在给大家分享一下: 这是我从官方的api手册中截图过来的,两个函数的参数在官方文档中解释的很清楚,我就不再解释了。 对int型数据进行排序 我们来看这两个函数中都需要传入一个名为com

qq_43142218的博客 799

PCIe网卡驱动实现分析(三)--- cache一致性

在现代处理器系统中,CPU的主频远高于主存读写速度,主存的读写速度成为程序执行效率的瓶颈;为了解决这个问题,在CPU和主存之间引入了Cache存储器,基于程序执行的局部性原理,在程序执行时,将正在使用的数据从主存拷贝一份到Cache,这样CPU就可以直接从Cache读写数据以改善主存读写速度慢的问题;

a935854743的博客 1779

[低代码 + AI] 明道云与 Dify 的三种融合实践方式详解

融合方式技术路径优点局限或注意事项UI 嵌入iframe 表单嵌入快速集成、用户体验一致无法自定义交互逻辑明道云调用 DifyAPI 请求节点工作流自动化、逻辑灵活有 timeout 限制、需优化 promptDify 调用明道云插件或 API 调用节点可查询实际业务数据、增强 AI 智能需理解明道云 API 结构、权限设置复杂明道云与 Dify 的结合为低代码平台注入了智能动力。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 1187

C++ 二分查找法

题目: 给定一个 n 个元素有序的(升序)且元素不重复的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 二分查找法前提:有序且元素不重复。 解题: int search(vector<int>& nums, int target) { int left = 0; int right = nums.size() - 1; // 定义target在左闭右闭的区间里,[left,

L_S_R_的博客 2619

如何使用tinyalas接口从usb录音的同时从扬声器播放

3、 以上步骤确认完后,就可以修改tinyhostless.c程序,tinyhostless的本质就是边pcm_read(),边pcm_write();但原本tinyhostless只支持对同一声卡进行操作,所有需要修改其代码,改成录音和播放可支持不同声卡,如果是模拟声卡,有回环测试,可以实现边录边播放,但涉及USB声卡时,就没有现场的类似功能,有时候客户因为硬件特殊性,会有从USB录音的同时从扬声器播放出来的需求,本文简要描述如何使用tinyalsa接口实现该需求;

sdrgtywretyeruet的专栏 971

二分查找的多种实现方式及本质解析(c++实现 + 例题)

三种方式的二分查找:闭区间二分,左闭右开二分, 开区间二分,二分查找的各种大于小于等关系的判定!! 任何关系都可以由>= 的关系表示 leetcode例题:34. 在排序数组中查找元素的第一个和最后一个位置解析

ylh的博客 2947

置顶必读(2) |《滚雪球学数学建模》专栏目录 & 历年国赛/美赛真题库 & 真题解析(持续更新中)

本专栏《滚雪球学数学建模》采用“从零开始、逐步滚雪球”的学习路径,把数学建模的基础理论、方法工具与大量实战真题(尤其是国赛题,涵盖2025-1992所有真题)有机融合,形成一套系统化训练路线。非常适合零基础入门、希望提升模型与工程化能力的本科/研究生,以及备战全国大学生数学建模竞赛(国赛/省赛)的同学。加油,我们一起把建模能力打造成可迁移的核心竞争力!

**My Coding Family** 26万+

鸿蒙接入微信支付 微信H5网页在鸿蒙系统的适配方法(含支付兼容方案) 微信H5适配鸿蒙系统 | ArkWeb识别 | 鸿蒙浏览器UA | 微信支付鸿蒙适配 | 鸿蒙微信判断方式

微信H5网页鸿蒙系统适配指南 针对微信H5网页在鸿蒙系统出现的兼容问题,本文提供完整适配方案。关键点包括: 环境识别:

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1300

C++算法:二分查找(Binary Search)

在枚举查找里,要一个不漏的查找完所有数据,最坏情况下时间复杂度为O(n)。这就导致程序的时间消耗非常巨大,若a数组的最大下标为1000000,则程序也需要查找1000000次,很容易导致TLE(Time Limit Exceeded)。那么有没有一种更快捷的方法呢? 当然有,这就是二分查找法(Binary Search),想象一下,对于一个无序数列,我们当然只能枚举,但如果是一个有序数列,那么在查找的过程中就会有迹可循。

fk__boy的博客 6596

[STM32F103C8T6]W5500+Modbus TCP(HAL库)

本章节是博主学习Modbus TCP所写的一篇文章Modbus TCP是Modbus的一个分支,主要用到网口通信的,在工业上也用的很频繁,我们公司最近的项目就是用的W5500+modbus TCP来和PC端的上位机通信和交互的。虽然这个项目不是我在写代码,但是我都学了Modbus RTU了,那我也抽空学习一下Modbus TCP吧。本次的Modbus TCP不是博主写的,是一个大佬开源的一个W5500写的一个Mobus TCP代码,我在这个基础上自己写了主机读从机多个数据,和主机写从机寄存器的函数。

sinat_58149788的博客 4086

c++实现二分查找

#include<iostream> using namespace std; void test(int *arr, int low, int high, int key) { int mid = 0; while (high >= low) { mid = (high + low) / 2; if (arr[mid] == key) { cout << "找到了数字" << arr[mid] << endl; ret

orange_monkey的博客 1088

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C++实现二分查找

二分查找(Binary Search)是一种在有序数组中查找特定元素的算法。它的基本思想是将待查找区间的中间元素与目标值进行比较,根据比较结果缩小查找范围,直到找到目标值或者确定目标值不存在为止。

Chinese_chen_的博客 724

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

二分查找—c++实现

因为我之前写过python二分查找,直接上代码 大佬文章在这 #include <vector> using namespace std; class Solution { public: int search(vector<int> &n, int target) { for (int left = 0, right = n.size() - 1; left <= right;) { int

heart_6662的博客 547

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C++ 二分查找实现

C++ 二分查找 二分查找法是针对于有序向量中,查找该向量中某一个数。 二分查找法是通过将向量中点的值与要查找的值进行比较,然后每次减半去缩小查找范围。 代码实现 #include<iostream> using namespace std; //时间复杂度O(log) template<class T> int binaryFind(T *arr,const T &value, int left,int right) { //若数组中value有重复,则会找到

weixin_44444450的博客 898

用C++实现二分查找

用C++实现二分查找   对于有序表而言,通常使用二分查找来寻找待查记录。二分查找,又名折半查找,具体查找过程为:先确定待查找记录的范围,然后逐步缩小范围知道找到或者找不到该记录为至。其C++实现代码如下所示: 1 #include <iostream> 2 using namespace std; 3 4 /*二分查找: 5 array:待查找的数组 ...

weixin_30387663的博客 210

二分查找c++实现

二分查找的算法原理较为简单,在此给出c++代码实现,以及代码中遇到的问题,以及解决方案: 1 # include "iostream" 2 using namespace std; 3 4 //template <class, T> 5 int Binary_search( const int vector[] , int value)//采用泛型的方式 ...

weixin_30414635的博客 308

二分查找的c++实现

二分查找的c++实现 #include <iostream> #include <vector> using namespace std; //在有序表中进行二分查找,成功时返回结点的位置,失败时返回-1 //设表为递增 int binarySearch(const vector<int> &vec, int num) { int low ...

weixin_44048823的博客 286

C++ 迭代与递归方式分别实现二分查找

C++ 迭代与递归方式分别实现二分查找 文章目录C++ 迭代与递归方式分别实现二分查找0.前言1.迭代方式二分查找2.递归方式二分查找 0.前言 查找算法是一种常用算法,查找算法即从给定的数组中,找出要查找的元素第一次出现的位置,如果数组中该元素不存在,返回 -1。 使用二分查找的注意事项: 必须是有序序列才可以使用二分查找。 1.迭代方式二分查找 int binarySearch(std::vector<int>& arr, const int value){ int head

annjeff的博客 409

二分查找的C++实现

1.递归实现 #include  using std::cout;using std::cin;using std::endl;int BSearch(int *a,int key,int low,int high){    int mid;    if(low>high)        return -1;    mid=(low+hi

yuwei19840916的专栏 602

C++实现快排和二分查找

C++实现快排和二分查找 #include&amp;lt;iostream&amp;gt; using namespace std; void quick_sort(int *arr, int left, int right) { if (left &amp;gt;= right) return; int i = left, j = right; int standard = arr[(right+left)/...

qq_36113917的博客 346
上一篇: task7:pytorch实现mnist手写字体识别
下一篇: 使用服务器上的tensorflow在pycharm中无法加载
夜猫子科黎
博客等级 码龄10年 40粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值