二分查找 理论 例题

news/2025/1/15 7:59:22/文章来源:https://www.cnblogs.com/wangyueshuo/p/18549043

 

 

 

 

 

递归代码

int binary_search(int arr[],int left,int right,int key){if (left>right){//区间无效return -1;}int mid=left+(right-left)/2; //直接平均可能会溢出if(arr[mid]==key){return mid;}else if(key>arr[mid]){return binary_search(arr,mid+1,right,key); //右半区间继续查找}else{return binary_search(arr,left,mid-1,key); //左半区间继续查找}
}

 循环代码

//代码中 arr 表示数组,left 表示区间左边界, right 表示区间右边界,mid 表示中间位置
int binary_search(int arr[],int left,int right,int key){int ret=-1;//未搜索到数据返回-1int mid;//中间位置while(left<=right){//只要区间有效就继续mid=left+(right-left)/2; //直接平均可能会溢出if(arr[mid]==key){ret=mid;//找到break; }else if(key>arr[mid]){//右半区间继续查找left=mid+1;}else{right=mid-1; //左半区间继续查找}}return ret; // 返回结果
}

1

#include<iostream>
using namespace std;
int main(){int a[5]={1,2,2,3,4};int n;cin>>n;int l=0,r=4;int m;while(l<=r){m=l+(r-l)/2;if(a[m]>=n){r=m-1;}else{l=m+1;}if(a[l]==n){cout<<l;return 0;}}cout<<-1;
}

2

#include<iostream>
using namespace std;
int main(){int a[5]={1,2,2,3,4};int n;cin>>n;int l=0,r=4;int m;while(l<=r){m=l+(r-l)/2;if(a[m]>n){r=m-1;}else{l=m+1;}if(a[r]==n){cout<<r;return 0;}}cout<<-1;
}

3

#include<iostream>
using namespace std;
int main(){int a[9]={1,4,5,8,10,10,12,13,15};int n;cin>>n;int l=0,r=8;int m;while(l<=r){m=l+(r-l)/2;if(a[m]>=n){r=m-1;}else{l=m+1;}if(a[l]>=n){cout<<l;return 0;}}cout<<-1;
}

4

 

#include<iostream>
using namespace std;
int main(){int a[9]={1,4,5,8,10,10,12,13,15};int n;cin>>n;int l=0,r=8;int m;while(l<=r){m=l+(r-l)/2;if(a[m]>n){r=m-1;}else{l=m+1;}if(a[r]<=n){cout<<r;return 0;}}cout<<-1;
}

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/834471.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

统信 UOS 操作系统介绍

一、前言 近年来,软件国产化的呼声越来越高,而操作系统国产化是软件国产化过程中核心的一环,自然也不例外。目前国产操作系统有 统信UOS、麒麟(Kylin) 和 openEuler 等,本篇文章为大家介绍 统信UOS 操作系统,主要包括统信UOS 简介 版本介绍 选择建议与系统展示 总结二、…

经营分析是什么

在当今快速变化的商业环境中,大厂们越来越重视经营分析,这不仅是对企业经营状况的全面诊断,更是实现效益最大化的关键。近期一连有两个大厂(短视频、游戏)的朋友来聊经营分析,着实让我好奇了一下。经营分析这个东西,以往都是传统国企做得多,咋连他们也开始纠结了。 聊完…

2024-2025-1 20241318 《计算机基础与程序设计》第八周学习总结

这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP(如[2024-2025-1-计算机基础与程序设计])这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08这个作业的目标 加入云班课,参考本周学习资源自学教材 计算机科学概论(第七…

零基础入门Hadoop:IntelliJ IDEA远程连接服务器中Hadoop运行WordCount

今天我们来聊一聊大数据,作为一个Hadoop的新手,我也并不敢深入探讨复杂的底层原理。因此,这篇文章的重点更多是从实际操作和入门实践的角度出发,带领大家一起了解大数据应用的基本过程。我们将通过一个经典的案例——WordCounter,来帮助大家入门。简单来说,这个案例的目标…

NOIP2024 前集训:NOIP2024加赛 5

前言music 《浮光》看指尖拨响蝴蝶 扇动一场离别我推开无声岁月 续梦一页你我只是打个照面 可曾有过誓约走进熟悉却 陌生的思念啊……啊……你的眼眸 装满了时间你的身后 拥故事成篇此生如梦 愿细数流年与你同写 沧海桑田浮光掠影 重山彩云间你的伏线 穿越千百年人生不过 恍惚三…

读数据质量管理:数据可靠性与数据质量问题解决之道05数据标准化

数据标准化1. 批处理 1.1. 批处理在一段时间内收集数据,然后将大量数据“批处理”在离散的数据包中 1.2. 直到20世纪10年代中期,批处理都是处理分析型数据最常用的方法 1.3. 批处理比流处理要便宜得多,即使是对时间要求最苛刻的处理需求也足以满足 1.4. 批处理是经过时间考验…

基于C#开源、功能强大、灵活的跨平台开发框架 - Uno Platform

前言 今天大姚给大家分享一个基于C#开源、功能强大、灵活的跨平台开发框架:Uno Platform。通过 Uno Platform,开发者可以利用单一代码库实现多平台兼容,极大地提高了开发效率和代码复用性。项目介绍 Uno Platform是一个基于C#开源、功能强大、灵活的跨平台开发框架,用于快速…

chrony配置/释义

[root@c7-1 ~]# cat /etc/centos-release CentOS Linux release 7.9.2009 (Core)[root@c7-1 ~]# yum -y install chrony [root@c7-1 ~]# vim /etc/chrony.conf # 自带 server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp…

WPF 打开资源管理器且选中某个文件

本文将和大家介绍如何在 Windows 系统上使用 SHOpenFolderAndSelectItems 方法打开资源管理器且选中给定的文件打开资源管理器且选中某个文件可以使用 cmd 调用 explorer 带上 select 参数,如下面命令行所示 explorer.exe /select,"C:\Folder\file.txt"但有很多情况…

Virtual Box 虚拟机扩容

Virtual Box 虚拟机扩容 扩容有风险,有可能导致磁盘损坏,系统不可用。 需要使用的工具 gparted GParted -- A free application for graphically managing disk device partitions 步骤图解 1.扩大虚拟硬盘的容量2.加载分区工具执行分区操作3.扩展逻辑卷 要扩大 / 分区的空间…

RealCustom:缩小真实文本词的范围,实现实时开放域文本到图像的定制

RealCustom:缩小真实文本词的范围,实现实时开放域文本到图像的定制文本到图像定制旨在为给定的主题合成文本驱动的图像,最近彻底改变了内容创作。现有的作品遵循伪词范式,即将给定的主题表示为伪词,然后将其与给定的文本组合在一起。然而,伪词与给定文本固有的纠缠扩散范…

网站f12代码怎么修改,掌握网站F12调试工具的使用技巧

打开F12开发者工具:在浏览器中打开您需要调试的网页,按下F12键或右键点击页面任意位置选择“检查”(Inspect),即可打开开发者工具。选择Elements面板:在开发者工具顶部的选项卡中,选择“Elements”面板。这里显示了当前页面的HTML结构。查找目标元素:使用鼠标悬停在页面…