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

    90120

    【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/?

    6810

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

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

    11710

    C语言二叉树的实现

    因此根也叫做根节点 子节点/孩纸:就是一个节点的下面离它最近的的节点,比如A的子节点是BC而不是BCDEFG,E的子节点是G,G没有子节点 父节点/父亲:这里就是倒置了一下,比如G的父节点是E,EF的父节点是C,...,我认为这个视频讲得比较好http://pan.baidu.com/s/1i3yYd2t 然后我们再细分二叉树,它分为: 空二叉树:就是什么都没有 满二叉树:每个节点都有两个子节点 完全二叉树:把一颗完全二叉树的最后一层从右往左删除一些节点得到的就是完全二叉树...: struct node *create_binary_tree(){ struct node *root; struct node *a=new node,*b=new node,*c=new...node,*d=new node,*e=new node,*f=new node,*g=new node; a->data='A'; b->data='B'; c->data='C'; d->...=NULL; c->lchild=e; c->rchild=f; d->lchild=NULL; d->rchild=NULL; e->lchild=g; e->rchild=NULL;

    1.7K20

    【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语言王道

    目录 线索二叉树概念 ——普通二叉树缺点 ——中序线索二叉树 ——先序线索二叉树 ——后序线索二叉树  —— 三种线索二叉树的比较 二叉树的线索化 普通方法代码 中序线索化代码 先序线索化代码 后序线索二叉树代码...---- 线索二叉树概念 ——普通二叉树缺点 1、普通二叉树在遍历的时候必须从根节点出发,不能从其中某一点开始遍历。...2、普通二叉树不能快速的找到某个结点的前驱。...n个结点的二叉树,有n+1个空链域!...和上同理 ——后序线索二叉树  和上同理 —— 三种线索二叉树的比较 ---- 二叉树的线索化 用土方法找到中序遍历前驱 普通方法代码 //辅助全局变量,用于查找p的前驱 BiTNode *

    76430

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

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

    12610
    领券