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

88720
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言】二分查找算法

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

    5910

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

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

    9910

    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 二分查找 二分查找是我们经常使用的一种算法,他的逻辑是 在升序或者降序且无重复元素的数组中

    11610

    数据结构——二叉查找树(C语言)

    二叉查找树,也称作二叉搜索树,有序二叉树,排序二叉树,而当一棵空树或者具有下列性质的二叉树,就可以被定义为二叉查找树: 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值。...任意节点的左、右子树也分别为二叉查找树。 没有键值相等的节点。 二叉查找树相比于其他数据结构的优势在查找、插入的时间复杂度较低,为O(log n)。...二叉查找树是基础性数据结构,用于构建更为抽象的数据结构,如集合、multiset、关联数组等。对于大量的输入数据,链表的线性访问时间太慢,不宜使用。...下面来看我们为二叉查找树定义的抽象行为: #ifndef _Tree_H struct TreeNode; typedef struct TreeNode *Position; typedef struct...: %d\n", FindMax(T)->Element); printf("最小值: %d\n", FindMin(T)->Element); return 0; } 编译运行这个C文件

    1.8K41

    二分查找:在有序数组中快速查找目标元素(c语言

    在计算机科学中,二分查找是一种高效的搜索算法,用于在有序数组中查找特定元素。它的原理简单却强大,可以在较大规模的数据集中快速定位目标元素。...本文将深入探讨二分查找算法的原理和实现,并展示如何在C语言中应用该算法,正在使用其他语言的小伙伴们也可以看下面是思路介绍,不妨自己去用其他语言尝试实现。 什么是二分查找算法?...为了使用二分查找,首先需要确保数组是有序的。这是因为二分查找是基于有序数组的特性来进行查找的。如果数组无序,我们需要先对数组进行排序,然后再进行二分查找。...C语言实现示例。...通过运行上述代码,您将会得到目标值在数组中的索引,或者得到目标值不存在的提示       通过本文的介绍,我们深入了解了二分查找算法的原理和在C语言中的应用。

    69610

    C语言每日一题(6)二分查找

    思路分析 1.二分查找的基本思想 二分查找的基本思想是通过比较中间元素与目标元素的大小来不断缩小搜索范围,直到找到目标元素或确定目标元素不存在为止。其基本步骤如下: 1....重复步骤2和步骤3,在新的搜索范围内进行二分查找,直到找到目标元素或确定目标元素不存在为止。如果搜索范围为空,即开始索引大于结束索引,则目标元素不存在。...二分查找的关键在于每次通过比较中间元素来确定目标元素的可能位置,将搜索范围缩小一半,从而大大减少了搜索的次数,提高了查找效率。但前提是数组或列表必须是有序的。...= nums[mid] && low <= high) { //若当前mid值不为查找值,更新查找区域。

    10010

    C语言必刷题】3.二分查找

    前言 二分查找又称为折半查找,是分治算法基础上设计出来的查找算法。 二分查找算法仅适用于有序序列,它只能用升序序列或者降序序列中查找目标元素。...算法描述 二分查找的核心思想:不断地缩小搜索的区域,降低查找目标元素的难度。 前提:有已排序的数组arr。 定义左边界(Left),定义右边界(Right),确定搜索范围,循环执行二分查找....arr[Middle] == t 表示知道了,返回中间下标 arr[Middle] > t 中间值右侧的其他元素都大于t,不需要比较,中间下标左边去找,Middle - 1 设置右边界,重新查找。...arr[Middle] < t 中间值左侧的其他元素都小于t,不需要比较,中间下标右边去找,Middle + 1 设置左边界,重新查找。 当 Left > Right ,表示没有找到,循环结束。...算法实现 void binarysearch(int arr[], int Length, int t) // 数组、数组长度和要查找的数 { int find = -1;//标记 int Left

    12210
    领券