首页
学习
活动
专区
工具
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

    查找三 哈希表的查找

    注:哈希查找与线性表查找和树表查找最大的区别在于,不用数值比较。 冲突 若 key1 ≠ key2 ,而 f(key1) = f(key2),这种情况称为冲突(Collision)。...构造哈希表这个场景就像汽车找停车位,如果车位被人占了,只能找空的地方停。 ? 构造哈希表 由以上内容可知,哈希查找本身其实不费吹灰之力,问题的关键在于如何构造哈希表和处理冲突。...当程序查找哈希表时,如果没有在第一个对应的哈希表项中找到符合查找要求的数据元素,程序就会继续往后查找,直到找到一个符合查找要求的数据元素,或者遇到一个空的表项。...(2)拉链法 将哈希值相同的数据元素存放在一个链表中,在查找哈希表的过程中,当查找到这个链表时,必须采用线性查找方法。...,直接返回NULLKEY     } } (4)插入关键字为key的记录 将待插入的关键字key插入哈希表 先调用查找算法,若在表中找到待插入的关键字,则插入失败; 若在表中找到一个开放地址,则将待插入的结点插入到其中

    1.5K50

    C语言手撕顺序表

    一、概念 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。 顺序表一般分为 1、静态顺序表:使用定长数组存储元素。...2、动态顺序表:使用动态开辟的数组存储 我们一般使用动态顺序表,因为静态顺序表的数组大小固定的,而动态可以根据我们需求的不同去在线扩容,所以接下来的文章围绕如何实现动态顺序表来讲解。...);//头删 void SeqListPopBack(SeqList* ps);//尾删 void SeqListCheckCapacity(SeqList* ps);//检查是否需要扩容 // 顺序表查找...int SeqListFind(SeqList* ps, SLDateType x); // 顺序表在pos位置插入x void SeqListInsert(SeqList* ps, int pos,...心得: 顺序表开启了数据结构的的序章,顺序表算是很简单的数据结构了,从此我们需要敲一部分代码,编译一次,不能一股脑的输出,结果编译发现好多个bug,需要写一部分,编译一部分,这样才更加的有持续性。

    9810

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

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

    11710

    C语言——S顺序表专题

    数据结构总结: 1)能够存储数据(如顺序表、链表等结构); 2)存储的数据能够⽅便查找。...一、顺序表的概念及结构 线性表 线性表(linearlist)是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中⼴泛使⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串......1、静态顺序表:使用定长数组存储元素 静态顺序表缺陷:空间给少了不够⽤,给多了造成空间浪费 2、动态顺序表:按需申请 3、动态顺序表的实现 #define INIT_CAPACITY 4 typedef...>size - 1; i++) { ps->arr[i] = ps->arr[i + 1];//ps->arr[i-2] = ps->arr[i-1]; } ps->size--; } 七、查找...//在顺序表中查找X int SLFind(sL* ps, sLDataType x) { for (int i = 0; i size; i++) { if (ps->arr[

    8910
    领券