iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >用C语言实现二分查找算法
  • 681
分享到

用C语言实现二分查找算法

2024-04-02 19:04:59 681人浏览 安东尼
摘要

目录一.前言二.二分查找法1.什么是二分查找法2.如何用C语言来实现二分查找法三.总结总结一.前言 假如今天我们需要在一个有序的数组中来寻找一个数的下标,就用"1,2,3,

一.前言

假如今天我们需要在一个有序的数组中来寻找一个数的下标,就用"1,2,3,4,5,6,7,8,9"这九个数组成的数组来说,假如我们想寻找'2',那很简单我们只用从小到大开始寻找,寻找两次就完成了,但是我们想寻找'7',我们继续用从小到大挨个寻找,这就显得有点慢并且耗时长还没有效率,因此我们可以有一种全新的方法,二分查找法来解决这个问题。

二.二分查找法

1.什么是二分查找法

二分查找法,又叫做折半查找法,它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。就用刚刚的数组来说,我们想寻找'7',很简单我们先用7和数组中间的数来比较大小,很明显7大于,所以我们缩小范围,从中间的右边开始继续取中间值,继续寻找,直到找到位置,这样一看找的次数少了很多,而且速度也快了不少。

2.如何用c语言来实现二分查找法

咱们来分析一下刚刚我说的找数字7的过程,首先我们需要数组的中间的数也就是中间数的下标值,那我们就需要直到数组第一个元素和最后一个元素的下标值,数组第一个元素下标值很明显是0,我们把他定义成left;这个最后一个元素的下标值我们就需要利用sizeof来计算,我们把他定义成rigth。然后两个相加,算出最中间的下标,我们把他定义为mid,和要找的数进行比较,假如大于要找的数那就从mid+1和right之间来继续刚刚的循环,假如小于要找的数那我们就从left和mid-1之间寻找。就这样一直循环,直到找到目标数为止。

代码的实现如下

void Findnum(int* arr, int key,int sz)//arr为目标数组,key为需要查找的数,sz为数组元素的大小
{//二分查找
	int  left = 0;//左边
	int right = sz-1;//右边
	while (left <= right)
	{
		int mid = (right + left) / 2;
		if (arr[mid] > key)
		{//说明key在arr[mid]和left之间
			right = mid - 1;
		}
		else if (arr[mid] < key)
		{
			left = mid + 1;
		}
		else
		{
			printf("找到了,对应的下标为:%d\n", mid);
			break;
		}
	}
	if (left > right)
	{
		printf("找不到\n");
	}
}

最后运行

三.总结

关于上面的过程,我们不难发现二分查找法虽然很快,但是有两个很明显的缺点,一个是他实现的条件必须是一个有序的数列,另外一个是他只能一次性找一个数而不是多个,这就让他有了很多局限性。二分查找有个很重要的特点,就是不会查找数列的全部元素,而查找的数据量其实正好符合元素的对数,正常情况下每次查找的元素都在一半一半地减少。所以二分查找的时间复杂度为

log2o是毫无疑问的。

总结

到此这篇关于c语言实现二分查找法的文章就介绍到这了,更多相关c语言二分查找法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 用C语言实现二分查找算法

本文链接: https://www.lsjlt.com/news/162761.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 用C语言实现二分查找算法
    目录一.前言二.二分查找法1.什么是二分查找法2.如何用c语言来实现二分查找法三.总结总结一.前言 假如今天我们需要在一个有序的数组中来寻找一个数的下标,就用"1,2,3,...
    99+
    2022-11-12
  • C语言算法--有序查找(折半查找/二分查找)
    目录题目解法一: 挨个遍历方法二:折半查找/二分查找(仅适用于有序查找)总结题目 首先我们来把题目瞅一眼: 在一个有序数组中查找具体的某个数字n。 编写int binary_sea...
    99+
    2022-11-12
  • 详解Go语言实现线性查找算法和二分查找算法
    目录线性查找算法二分查找算法小结线性查找 线性查找又称顺序查找,它是查找算法中最简单的一种。它的基本思想是在在一组数据中,从第一个元素开始,依次和预期值比较,直到和预期值相等,则查找...
    99+
    2022-12-20
    Go线性查找算法 Go二分查找算法 Go查找算法
  • C语言二分查找法怎么用
    这篇文章主要讲解了“C语言二分查找法怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言二分查找法怎么用”吧!示例 1:输入: nums = [-1,0,3,5,9,12], targ...
    99+
    2023-06-30
  • Python语言实现二分法查找
    前言: 二分法也就是二分查找,它是一种效率较高的查找方法 假如公司新来了一个人,叫张三,他是你们公司第47个人,过了一段时间后,有些人呢看张三不爽,离职了,那这时候张三肯定不是公司第...
    99+
    2022-11-13
  • C#二分查找算法
    1、定义: 折半搜索,也称二分查找算法、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。 要计算把目标值插入到该数组中的索引值。最开始的思路: ①.先把目标数插入到数组中 ②...
    99+
    2022-11-13
  • C语言详细讲解二分查找用法
    目录【力扣题号】704.二分查找 力扣题目链接 示例 1: 输入: nums = [-1,0,3,5,9,12], target = 9     输出:...
    99+
    2022-11-13
  • C语言巧用二分查找实现猜数游戏
    目录(壹)二分查找  1.1  何为二分查找  1.2  二分查找的原理  1.3  查找条件  1.4&nbs...
    99+
    2022-11-13
  • C语言中二分查找怎么用
    这篇文章主要介绍了C语言中二分查找怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。基础的二分查找先来回顾下基础的二分查找的基本框架,一般实际场景都是查找和 target ...
    99+
    2023-06-29
  • C#二分查找算法怎么用
    这篇“C#二分查找算法怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#二分查找算法怎么用”文章吧。1、定义:折半搜索...
    99+
    2023-06-30
  • 如何使用Python语言实现二分法查找
    这篇文章主要为大家展示了“如何使用Python语言实现二分法查找”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Python语言实现二分法查找”这篇文章吧。前言:二分法也就是二分查找,它是...
    99+
    2023-06-29
  • C语言二分查找图文详解
    目录一、二分查找算法1.假定给定的数组中元素个数为奇数个2.假定给定的数组为偶数个3.假定给定的数不在此数列中二、分支语句中应注意的小点1.悬空else语句2.switch语句中的b...
    99+
    2023-05-18
    c语言二分查找 c语言二分查找代码 c语言二分查找法
  • C语言如何使用二分查找实现猜数游戏
    这篇文章给大家分享的是有关C语言如何使用二分查找实现猜数游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。(壹)二分查找 1.1  何为二分查找折半查找,也称二分查找,在某些情况下相比于顺序查...
    99+
    2023-06-29
  • C语言通过二分查找实现猜数字游戏
    目录二分查找二分查找的思想二分查找的条件二分查找的实现过程代码举例猜数字游戏游戏说明猜数字游戏思想代码实现整体代码演示二分查找 题目: 在一个有序数组中查找具体的某个数字n。 首先我...
    99+
    2023-02-03
    C语言 二分查找实现猜数字 C语言 二分查找 C语言 猜数字
  • C语言中二叉查找树怎么实现
    本文小编为大家详细介绍“C语言中二叉查找树怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言中二叉查找树怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。二叉查找树性质1、二叉树每个树的节点最多有...
    99+
    2023-06-16
  • C语言数据结构之二分法查找详解
    问题:在有序数组中查找给定元素的下标goal。 在查找一个数组元素的下标,可以用循环来解决,但是如果一个数足够大,比如说手机的价格,用循环来查找,就相当于叫一个人猜,从0开始,需要猜...
    99+
    2022-11-13
  • C语言算法练习之折半查找的实现
    目录1. 题目描述2. 问题分析3. 算法设计4. 动图演示5. 代码实现6.知识点补充continue 语句break 语句continue语句 和 break语句的区别7. 问题...
    99+
    2022-11-13
  • Python 语言实现六大查找算法
    目录一、顺序查找算法二、折半查找算法三、插补查找算法四、哈希查找算法五、分块查找算法六、斐波那契查找算法七、六种查找算法的时间复杂度一、顺序查找算法 顺序查找又称为线性查找,是最简单...
    99+
    2022-11-12
  • C语言怎么通过二分查找实现猜数字游戏
    本文小编为大家详细介绍“C语言怎么通过二分查找实现猜数字游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言怎么通过二分查找实现猜数字游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。二分查找题目: 在一个...
    99+
    2023-07-05
  • 详解C语言中二分查找的运用技巧
    目录基础的二分查查找左侧边界查找右侧边界二分查找问题分析实例1: 爱吃香蕉的珂珂实例2:运送包裹前篇文章聊到了二分查找的基础以及细节的处理问题,主要介绍了 查找和目标值相等的元素、查...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作