二分查找 递归

2023-11-09

碎碎念念

假设我们要在一个升序排序的整型数组中查找某个特定的整数,如果找到了,返回该整数在数组中的索引号,如果没有找到,则返回-1。

我们首先看要找的数和数组中间的数的大小关系,如果相等,那么说明找到了,如果要找的数小于数组中间的数,那么我们再在数组的前半部分继续查找,如果大于,那么我们再在数组的后半部分继续查找,每次查找都将范围缩小一半,称为二分查找。

代码

#include<stdio.h>
int binary_search(int line[],int target,int begin,int end)
{
	int middle=(begin+end)/2;
	if(begin>end)
	return -1;
	if(target==line[middle])
	return middle;
	else if(target<line[middle])
	return binary_search(line,target,begin,middle-1);
	return binary_search(line,target,middle+1,end);
}
int main()
{
	int line[10]={1,2,3,4,5,6,7,8,9,10};
	if(binary_search(line,5,0,9)!=-1)
	printf("YES %d",binary_search(line,5,0,9)+1);
	else
	printf("NO");
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二分查找 递归 的相关文章

随机推荐

  • RabbitMQ--基础--11.1--持久化,消息的保障机制,生产者确认机制,消费者处理消息的模式

    RabbitMQ 基础 11 1 持久化 消息的保障机制 生产者确认机制 消费者处理消息的模式 1 持久化 交换机的持久化 队列的持久化 消息的持久化 1 1 交换机的持久化 RabbitMQ服务重启 若交换机不设置持久化 交换机的元数据会
  • 使用Resource Hacker 更改exe文件图标(小白注意)

    当需要将已经封装好的exe文件更改其图标时 使用resource Hacker可以实现 1 打开软件 2 将exe文件直接拖拽带软件里 这里以优酷 exe为案例 这就是显示的exe文件的内容 3 更改图标要更改icon Group 文件夹
  • C#中解决ListView更新数据出现闪烁的实例程序

    在使用vs自动控件ListView控件时候 更新里面的部分代码时候出现闪烁的情况 解决办法使用双缓冲 添加新类继承ListView 对其重写 一 双缓冲作用 双缓冲甚至是多缓冲 在许多情况下都很有用 一般需要使用双缓冲区的地方都是由于 生产
  • FinClip小程序中如何对接微信登录?FinClip小程序如何接入APP的授权登录?

    通常来说 真正意义的微信小程序授权登录只能在微信的APP中进行 是指由微信APP授权给微信小程序 而FinClip小程序的授权登录则是通过集成了SDK的第三方APP进行授权 因为一般APP自己就具有账号体系 而在集成FinClip SDK的
  • vue-cli初始化

    1 全局安装vue cli npm install g vue cli 全局安装vue cli vue version 或者 vue V 查看版本 2 创建项目 vue create vue cli demo 常用命令 serve vue
  • bcdedit添加win7启动项

    公司的电脑是日文win7系统 安装在C盘 后来有需求 在E盘安装了中文win7 只是偶尔用用 后来日语系统出了问题 重新格式化C盘 重装了日文系统 中文系统也就进不去了 现在突然要用中文系统了 需要修复一下启动项 用管理员权限执行cmd 然
  • 前端报错。

    一 前端报500 打开网络请求 看响应 1 500错误码的官方解释是 500服务器内部错误 Internal server error 主要是由于IWAM账号的密码错误造成的 该错误说明IIS服务器无法解析ASP代码 访问一个静态页面试试是
  • QT笔记——使用重载的信号多种方法

    使用重载的信号 的 多种写法 接下来我们将使用QComboBox 的信号来举例 我们发现currentIndexChanged 这个信号是重载的 我们在正常写是编译不通过的 ui comboBox gt addItem QStringLit
  • CCF/CSP 201604-2 俄罗斯方块(满分题解Java版)

    此题 猛滴一看确实非常容易让人懵懵的 主要是题目描述的非常不清晰 很难让人能够透彻的理解 如果连题目都看不懂 那就不谈写出代码了 题目描述 官方题目描述 题目地址 题目解读 关键的是要理解题目 Java题解 import java util
  • JPA @Query时,无法使用limit函数原因及解决方案

    前言 使用ssh时 我加入了springdata jpa去查询sql 在 query中使用limit函数时 报错 后来分析原因才知道 springdata jpa的 query中写的sql叫JPQL jpql是不支持limit函数的 而原生
  • ubuntu vsocde 配置 pcl头文件库

    vscode 配置 pcl头文件库 ctrl shift p 输入Edit configuretion 在includePath种添加 usr include pcl 1 8 如果还是没有提示 那么要开启提示 将复选框取消就行 还可以修改提
  • 剑指offer 学习笔记 把字符串转换成整数

    面试题67 把字符串转换成整数 类似atoi函数 把一个字符串转换成一个整数 当输入非法时返回0 为了区分是由于输入0而返回0还是输入非法而返回0 而声明了一个全局变量g nStatus 为了防止溢出 可先将结果存入long long类型中
  • 安装FISCO-BCOS的那些坑

    首先从官网下载源码 git clone https github com FISCO BCOS FISCO BCOS git要是内网的时候可以将源码下载后放到服务器进行解压unzip filename zip 执行build 如果没有安装过
  • vscode使用ssh远程连接服务器时出现timeout情况的解决方法汇总

    背景 mobaxterm通过ssh能正常连接服务器 而在vscode里远程连接服务器时则提示连接超时 解决方法一 win R打开运行命令框 输入cmd打开命令提示符 在下图红圈位置右键然后选择属性 选择取消 使用旧控制台 U 解决方法二 右
  • Visual Studio 2022 include和lib路径问题

    最近安装了Visual Studio 2022 想试下opengl 首先是用cmake尝试编译 结果编译不过 一直报错 LINK fatal error LNK1104 无法打开文件 ucrtd lib 然后我新建了一个工程 导入了glfw
  • Xshell 6安装和使用教程

    作者 翁松秀 Xshell 6安装和使用教程 工欲善其事必先利其器 Xshell 6安装和使用教程 一 XShell 6的安装 二 XShell 6的使用 创建链接 快捷键 主题 三 XFTP的下载和安装 一 XShell 6的安装 到官网
  • 数据挖掘---分类算法之支持向量机SVM

    上篇已经简单的说了下支持向量机的理论 里面有不少公式 需要肯学习的你一步步的推导试一试 说实在的还是挺能考验数学能力的 当年俺老孙就是一步步的推导过 只有这样你才能对这个过程有清晰的认识 才能对这个算法有所体会 下面来举个例子 说说用支持向
  • call、apply和bind的区别

    首先说说call apply和bind的作用吧 它们的作用都是相同的 都是动态的修改当前函数内部环境对象this的指向 call apply和bind区别 相同点 作用相同 都是动态修改this指向 都不会修改原先函数的this指向 异同点
  • 使用学生邮箱注册jetbrains

    1 到 https www jetbrains com zh student 点击申请按钮开始申请 2 在表单上方选择申请方式填写相关信息后提交申请 使用校园邮箱 就是广外邮箱 格式是学号加 gdufs edu cn 例如201810023
  • 二分查找 递归

    碎碎念念 假设我们要在一个升序排序的整型数组中查找某个特定的整数 如果找到了 返回该整数在数组中的索引号 如果没有找到 则返回 1 我们首先看要找的数和数组中间的数的大小关系 如果相等 那么说明找到了 如果要找的数小于数组中间的数 那么我们