C语言二分查找代码及解析
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语言二分查找代码及解析相关推荐
- 【C语言函数3.2】写一个函数,实现一个整形有序数组的二分查找代码
写一个函数,实现一个整形有序数组的二分查找代码 #include <stdio.h>int binary_search(int a[], int k, int s) {int left = ...
- python函数教程:Python递归函数 二分查找算法实现解析
这篇文章主要介绍了Python递归函数 二分查找算法实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.初始递归 递归函数:在一个函数里在调 ...
- c语言的二分查找,C语言二分查找法
讲解对象:C语言二分查找法 作者:融水公子 rsgz 前提:必须是有序的数据 left=0; middle=(left+right); right=9; left>right 意味 ...
- C语言二分查找(指针)
C语言二分查找 虽然说C有bsearch,但实际上真的很不好用,不如自己手写. 最近想练习一下指针和malloc开动态空间.( 其实就只是把所有能用指针的地方用指针的二分查找 #include < ...
- python实现二分查找代码+详解
python实现二分查找代码+详解 一.规定函数值 函数输入值 li=[1,2,3,4,5,6,7,8,9]#输入的集合 val=4#要查找的值 函数内部值 left=0#代表集合中第一个值的位置 r ...
- java二分查找(含二分查找代码)
目录 一:二分查找的条件 二:二分查找思想 三:二分查找代码(循环) 四:二分查找代码(递归) 一:二分查找的条件 1.1 必须是顺序存储结构 1.2 必须有序序列 二:二分查找思想 当 ...
- C语言二分查找递归与非递归实现
折半查找也成二分查找,它是一种效率较高的查找方法.但是,二分查找要求线性表必须采用顺序存储结构,而且表中元素需按关键字有序排列,以下内容均设有序表是递增有序的. 查找过程:首先,假设表中元素是按升序排 ...
- C语言二分查找法(指针和数组实现)
/** 编写一个函数,对一个已排序的整数表执行二分查找.* 函数的输入包括各异指向表头的指针,表中的元素个数,以及待查找的数值.* 函数的输出时一个指向满足查找要求的元素的指针,当未查找到要求的数值时 ...
- c语言 二分查找法 及二分查找法的时间复杂度。
二分查找法是用来查找数组中指定的那个元素.使用二分查找的前提是数组是有序的.(这里我们假设是升序) 在现实生活中,我们要猜一个区间内的数字,比如1~10之间,我们通常会猜它的中间数5,再根据要猜的数和 ...
最新文章
- lc412. Fizz Buzz
- you should specify the `steps` argument
- 解决yarn全局安装模块后但仍提示无法找到命令的问题
- java DOM4J 读取XML
- ViceDinoSpecCtrlDlg.cpp
- 《数据结构与算法 C语言版》—— 2.2线性表的顺序表示与实现
- 手持式频谱分析仪TFN RMT720A 频谱分析 基站分析 路测覆盖
- 智哪儿头条 萤石网络冲刺科创板 深圳购买全屋智能有补贴
- 在32bit操作系统下用好4GB物理内存
- 浅析经典JVM垃圾收集器-Serial/ParNew/Parallel Scavenge/Serial Old/Parallel Old/CMS/G1
- 若依对接企业微信JS-DK
- 笔记本电脑数据怎么恢复?笔记本电脑数据恢复用什么工具?
- unity 制作插件
- 2022卡塔尔世界杯小组赛出线形势分析指南——德国队会被西班牙做掉吗?
- 删除Management Data Warehouse (MDW) job失败
- 高等数学(上)知识点总结
- 中文技术文档的写作规范
- Python入门教程NO.5 用python写个自动选择加油站的小程序
- 红楼梦》室内空间艺术+古代门窗及家居装饰陈设+陈设和起居及其他。
- 【弄nèng - Activiti6】Activiti6入门篇(十五)—— 定时器中间事件