C语言二分查找代码及分析

二分查找法思想
二分查找是一种算法,其输入的要是一个有序的序列,如果要查找的数字在这个序列中,返回它对应得位置,不在返回-1。
示例
我随便想一个1-100的数字,你的目的是以最少的次数猜这个数字,每次猜后我都告诉你是猜大了还是猜小了,我们先想想应该怎么猜,最不聪明的方法是不是从小到大一次猜(暴力搜索),这肯定不大行,但是你要是开始猜50,我告诉你大了还是小了,你是不是排除了一半的数字。每次猜都取中间的那个数,每次排除一半,这就是二分查找。用这个方法查找的次数少了,运行的时间也会缩短。
注意
输入的序列在查找前必须有序。
代码实现

int binary_search(int a[],int item,int len)//由于是整形数组,所以我们必须传递他长度否则数组传参时会发生降级
{                                        int low=0,high=len-1;int mid,guess; //mid代表中间的数的下标,guess代表每次猜的数 while(low<=high)//只要范围没有缩小到只包含一个元素 {mid=(low+high)/2;guess=a[mid];if(guess==item)return mid;else if(guess>item)//猜的数大了 high=mid-1;elselow=mid+1;//猜的数小了 }return -1;//没有指定元素
}

参考书目《算法图解》

C语言二分查找代码及解析相关推荐

  1. 【C语言函数3.2】写一个函数,实现一个整形有序数组的二分查找代码

    写一个函数,实现一个整形有序数组的二分查找代码 #include <stdio.h>int binary_search(int a[], int k, int s) {int left = ...

  2. python函数教程:Python递归函数 二分查找算法实现解析

    这篇文章主要介绍了Python递归函数 二分查找算法实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.初始递归 递归函数:在一个函数里在调 ...

  3. c语言的二分查找,C语言二分查找法

    讲解对象:C语言二分查找法 作者:融水公子 rsgz 前提:必须是有序的数据 left=0;    middle=(left+right);    right=9; left>right  意味 ...

  4. C语言二分查找(指针)

    C语言二分查找 虽然说C有bsearch,但实际上真的很不好用,不如自己手写. 最近想练习一下指针和malloc开动态空间.( 其实就只是把所有能用指针的地方用指针的二分查找 #include < ...

  5. python实现二分查找代码+详解

    python实现二分查找代码+详解 一.规定函数值 函数输入值 li=[1,2,3,4,5,6,7,8,9]#输入的集合 val=4#要查找的值 函数内部值 left=0#代表集合中第一个值的位置 r ...

  6. java二分查找(含二分查找代码)

    目录 一:二分查找的条件 二:二分查找思想​​​​​​​ 三:二分查找代码(循环) 四:二分查找代码(递归) 一:二分查找的条件 1.1 必须是顺序存储结构 1.2 必须有序序列 二:二分查找思想 当 ...

  7. C语言二分查找递归与非递归实现

    折半查找也成二分查找,它是一种效率较高的查找方法.但是,二分查找要求线性表必须采用顺序存储结构,而且表中元素需按关键字有序排列,以下内容均设有序表是递增有序的. 查找过程:首先,假设表中元素是按升序排 ...

  8. C语言二分查找法(指针和数组实现)

    /** 编写一个函数,对一个已排序的整数表执行二分查找.* 函数的输入包括各异指向表头的指针,表中的元素个数,以及待查找的数值.* 函数的输出时一个指向满足查找要求的元素的指针,当未查找到要求的数值时 ...

  9. c语言 二分查找法 及二分查找法的时间复杂度。

    二分查找法是用来查找数组中指定的那个元素.使用二分查找的前提是数组是有序的.(这里我们假设是升序) 在现实生活中,我们要猜一个区间内的数字,比如1~10之间,我们通常会猜它的中间数5,再根据要猜的数和 ...

最新文章

  1. lc412. Fizz Buzz
  2. you should specify the `steps` argument
  3. 解决yarn全局安装模块后但仍提示无法找到命令的问题
  4. java DOM4J 读取XML
  5. ViceDinoSpecCtrlDlg.cpp
  6. 《数据结构与算法 C语言版》—— 2.2线性表的顺序表示与实现
  7. 手持式频谱分析仪TFN RMT720A 频谱分析 基站分析 路测覆盖
  8. 智哪儿头条  萤石网络冲刺科创板  深圳购买全屋智能有补贴
  9. 在32bit操作系统下用好4GB物理内存
  10. 浅析经典JVM垃圾收集器-Serial/ParNew/Parallel Scavenge/Serial Old/Parallel Old/CMS/G1
  11. 若依对接企业微信JS-DK
  12. 笔记本电脑数据怎么恢复?笔记本电脑数据恢复用什么工具?
  13. unity 制作插件
  14. 2022卡塔尔世界杯小组赛出线形势分析指南——德国队会被西班牙做掉吗?
  15. 删除Management Data Warehouse (MDW) job失败
  16. 高等数学(上)知识点总结
  17. 中文技术文档的写作规范
  18. Python入门教程NO.5 用python写个自动选择加油站的小程序
  19. 红楼梦》室内空间艺术+古代门窗及家居装饰陈设+陈设和起居及其他。
  20. 【弄nèng - Activiti6】Activiti6入门篇(十五)—— 定时器中间事件

热门文章

  1. 积极重返中国的谷歌,这次瞄准了AI入口
  2. MinIO按前缀批量下载文件到本地
  3. 机器学习面试150题(2020):不只是考SVM xgboost 特征工程
  4. 红米适配鸿蒙os,体验亮点满满!鸿蒙OS系统6月份开启适配,不只有华为手机
  5. html5病毒营销,病毒式营销的特点及成功案例
  6. 打造「可盈利个人品牌」终极指南,8个步骤开始建立你的个人品牌吧!
  7. 深度学习算法及其应用
  8. scrapy垂直爬取及多个item下载问题(爬取某个写真网)
  9. VisualStudio2022编译FreeCAD-0.20.2
  10. VM-虚拟机装苹果系统