首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言函数二分查找(折半查找)

    C语言函数二分查找(折半查找) 参考视频讲解哔哩哔哩比特鹏哥的视频 ——链接 二分查找 #include //二分查找 //在一个有序数组中查找具体的某个数 //如果找到了返回...//查找了一次范围就缩小了一半,这样的速度是比较快的 //这就叫二分查找(折半查找) //那么怎么找到中间元素的下标呢 //原来的数组是1 2 3 4 5 6 7 8 9 10 //他们的下标是...//左右下标又可以求出一个平均值是7,又找到一个对应的元素是8 //所以这一组查找范围的中间元素是8 //用8再跟我要找的元素比一下,比我找的元素要大 //说明我要查找的元素在8的左边 //这时候要查找的范围被再次的缩小成了...//一直找到左右下标无法确定新的范围,他们之间没有元素可以被查找的时候,结束,说明没有找到 //如果在某一次查找的时候,找到了,下标相等了,说明找到了,把下标给过来 int number_search...//在这里要进行很多次 //每一次二分查找的第一步是找被查找范围的中间元素的下标 while (left <= right) { int mid = (right + left

    90220

    【C语言】二分查找算法

    二分查找又称折半查找、二分搜索、折半搜索等 是一种在静态查找表中查找特定元素的算法使用二分查找算法,必须保证查找表中存放的是有序序列(升序或者降序),换句话说,存储无序序列的静态查找表,除非先对数据进行排序...,否则不能使用二分查找算法 一....举个例子: 二分查法是根据[(left+right)/2]的比较来确定哪个是我们需要的数字,left(左)和right(右)不断的变化,而中间的范围值也在不断缩小(C语言正常情况下是没有四舍五入的)...,判断这个数和目标的大小比较,最终快速的确定目标是否在我们的数组中 在这些的大前提下还有知道的就是二分查找法查的必须是有序数列,我们在查找时需要先进行排序,这些我也提前都准备好了: 我的文章中有关于冒泡排序的讲解...,大家可以看一看,有不懂可以及时私聊问我 下一期将关于排序和查找一体化的文章,希望大家多多支持点赞和关注

    7810

    C语言查找-----------BF算法&&KMP算法

    问题引入 有一个主字符串,有一个子字符串,要求我们寻找子字符串在主字符串里面开始出现的位置; 2.BF算法 BF算法就是暴力算法,这个做法虽然效率不高,但是按照我们传统的思路依然能够得到结果,接下来我们使用C语言实现这个查找的过程...除了手动求解我的博客有所涉及解析,其他的代码求解都是简写的(因为我对于其中的诸多细节也不是很通透明了,就不误人子弟了),读者可自行进行系统学习,超详细,链接如下) 【完整版】终于有人讲清楚了KMP算法,Java语言...C语言实现_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1UL411E7M8/?...0; } 这段代码涉及到了代码表示我们手动计算的值,还有数组的越界访问,找不到和自己一样的字符就会不停的回退,直到相同才会停止,详情请根据视频自行学习; 【完整版】终于有人讲清楚了KMP算法,Java语言...C语言实现_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1UL411E7M8/?

    6910

    DS静态查找之顺序索引查找

    题目描述 给出一个队列和要查找的数值,找出数值在队列中的位置,队列位置从1开始 要求使用顺序索引查找算法,其中索引表查找和块内查找都采用不带哨兵、从头开始的顺序查找方法。...输入 第一行输入n,表示主表有n个数据 第二行输入n个数据,都是正整数,用空格隔开 第三行输入k,表示主表划分为k个块,k也是索引表的长度 第四行输入k个数据,表示索引表中每个块的最大值 第五行输入...t,表示有t个要查找的数值 第六行起,输入t个数值,输入t行 输出 每行输出一个要查找的数值在队列的位置和查找次数,数据之间用短划线隔开,如果查找不成功,输出字符串error 输入样例1 18 22...顺序索引查找。 首先建立索引表,即两个数组,或者一个结构体数组,用来装关键字,即一个小分块里面最大的数值,还要装关键字对应的小分块在队列里面的起始位置。 关键字由题目给出。...然后到了查找部分: 其实就是部分顺序查找,先在索引表里面查找出在哪个子块里面,然后到子块里面顺序查找。

    19820

    轻松拿捏C语言——二分查找

    一、介绍 二分查找是一种在有序数组中查找某一特定元素的搜索算法。 举个生活中的例子,当我们要去图书馆借书时,知道了要找的图书编号,我们可以在一个大致范围的中间查找,然后在决定往前找还是往后找。...搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束; 如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。...} else { printf("元素 %d 不在数组中\n",key); } return 0; } 使用循环的方式来实现二分查找...无论使用哪种方式,都需要确保数组是有序的,因为二分查找的前提是有序数组。

    11710

    经典算法学习之-----顺序查找,折半查找,索引查找

    1.算法概念: 算法可以在有限的空间和时间内用定义明确的形式语言来表示,以计算函数。算法的一个典型例子是欧几里德算法,用于确定两个整数的最大公约数。...2.算法表达: 算法可用多种符号表示,包括自然语言、伪代码、流程图、drakon图表、编程语言或控制表。...伪代码、流程图、drakon图表和控制表是表达算法的结构化方式,避免了自然语言语句中常见的许多歧义。编程语言主要用于以计算机可以执行的形式表达算法,但通常被用作定义或记录算法的一种方式。...索引查找 索引查找主要分为基本索引查找和分块查找,核心思想是对于无序的数据集合,先建立索引表,使得索引表有序或分块有序,结合顺序查找与索引查找的方法完成查找。 数据太多,杂乱无章,查找困难!...索引查找又称为分块查找,是一种介于顺序查找和二分查找(折半查找)之间的一种查找方法,索引查找的基本思想是:首先查找索引表,可用二分查找或顺序查找,然后在确定的块中进行顺序查找。

    17510

    算法07 五大查找之:索引查找

    上一篇总结了二分查找,这一篇要总结的是索引查找。 关于索引,我们很容易地联想到数据库中的索引,建立了索引,可以大大提高数据库的查询速度。...索引查找又称为分块查找,是一种介于顺序查找和二分查找之间的一种查找方法,索引查找的基本思想是:首先查找索引表,可用二分查找或顺序查找,然后在确定的块中进行顺序查找。...在实现索引查找算法前需要弄清楚以下三个术语。 (1)主表。即要查找的序列。 (2)索引项。一般我们会将主表分成几个块,每个块建立一个索引,这个索引就叫索引项。 (3)索引表。即索引项的集合。...同时,索引项包括以下三点。 (1)index,即索引项在主表的关键字。 (2)start,即块内的第1个元素在主表中的位置。 (3)length,即块的长度。 索引查找的示意图 示意图如下: ?...索引查找的代码实现 代码: IndexItem.java public class IndexItem { public int index; public int start;

    2K60

    【C语言】二分查找与冒泡排序

    ✨作者:@平凡的人1 ✨专栏:《C语言从0到1》 ✨一句话:凡是过往,皆为序章 ✨说明: 过去无可挽回, 未来可以改变 ---- 二分查找 在有序数组中查找具体的某个数字n,...我们一般从中间元素开始找,查一次去掉一半数字,这种方法我们给它取名为折半查找即为二分查找,效率大大提高!怎么理解呢?...如果有2的32次方个数字,我们最多只需查找32次,而一个一个数运气不好却是2的32次方次。...如果查找的元素小于arr[mid],这说明查找的元素在中间元素的左边,这时候最右边元素right = mid-1,同理,如果查找的元素大于arr[mid],这说明了查找元素在中间元素的右边,这时候最左边元素...left = mid+1.如果出现left>right的情况,这也就说明了数组中并没有存在查找的元素。

    1K30

    【C语言】C语言基础习题详解(牛客网)&&二分查找逻辑

    因为scanf()接收字符串,遇到空格就停止不会继续往后读取了 ​ 4.二维数组中的查找 二维数组中的查找,这是剑指offer中的一道数组方面的题目 牛客网中也有同样的题目 4.1 题目描述 ​ 4.2...在剩下的两行两列中,位于右上角的数字刚好就是我们要查找的数字7,于是查找过程结束。 用下图表示 ​ 4.2.2 二维数组中数字的查找规律 首先选取数组中右上角的数字。...如果该数字等于要查找的数字,则查找过程结束; 如果该数字大于要查找的数字,则剔除这个数字所在的列;如果该数字小于要查找的数字,则剔除这个数字所在的行。...也就是说,如果要查找的数字不在数组的右上角,则每一次都在数组的查找范围中剔除一行或者一列,这样每一步都可以缩小查找的范围,直到找到要查找的数字,或者查找范围为空。...(price-min):maxProfit; } return maxProfit; } 7.二分查找逻辑 7.1 二分查找 二分查找是我们经常使用的一种算法,他的逻辑是 在升序或者降序且无重复元素的数组中

    12810
    领券