编写一个折半查找函数

#include<stdio.h>
//编写折半查找函数int binsearch(int a,int num[],int b )
{int left=0,right=b-1,mid=0; while(left<=right){   int mid=(left+right)/2; if (num[mid]<a){left=mid+1;}else if (num[mid]==a){return mid;}else{right=mid-1;}}return -1;
}
int main()
{int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int key = 0;int sz = sizeof(arr) / sizeof(arr[0]);printf("请输入你想找的数字:\n");scanf("%d", &key);int ret = binsearch(key, arr, sz);if (ret == -1){printf("不存在!\n");}else{printf("%d在数组中为arr[%d]\n", key,ret);}return 0;
}

在这个代码中最重要的是理解折半查找的含义,分析每次循环的条件判断,当key>mid时,

left应该右移一次;档key<mid时,right应该左移一次;还有需要注意的是,用mid=left+right的方法并不是很安全,有可能会溢出,另外,折半查找只适用于一个有序的数组中查找具体的数字。

注意在选择right的值时,如果right=size,则下面的while循环应该改为while(left<right),当所要查找的数据小于mid时,right=mid,而不是right=mid-1;

转载于:https://blog.51cto.com/originalbyinn/1722096

编程成长日记——折半查找相关推荐

  1. 编程成长日记——有意思的编程题(二)

    //5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 //A选手说:B第一,我第三. //B选手说:我第二,E第四. //C选手说:我第一,D第二. //D选手说:C最后,我第三. //E选手 ...

  2. vue替换全部符合’字符串_技术成长日记-Vim实用技巧-4.7查找替换

    1. 普通查找 / 向下查找 ? 向上查找 n 查找下一个目标字符串 N 查找上一个目标字符串 q/ 回溯查找历史,输入该命令后会在状态栏上方显示一个查找历史回溯窗口,如图4.1: 图4.1 回溯查找 ...

  3. D-OJ刷题日记:折半查找 题目编号:518

    折半查找 题目编号:518 题目描述 评论 定义一个整型数组r,用于存储关键码集合,其中r[1]~r[n]用于存储有效的关键码,r[0]留作它用,注意该数组按关键码有序.按照折半查找方法,查找在关键码 ...

  4. Python二分查找/折半查找算法详解--(面试常考)

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究)   二分查找也称折 ...

  5. 测试开发工程师成长日记018 - 测试面试必备题记录(持续更新)

    技术模块 一.在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试? 建立测试计划,确定测试标准和测试范围 设计典型场景的测试用例,覆盖常用业务流程和不常用的业务流程等 ...

  6. Java实现折半查找(二分查找)的递归和非递归算法

    Java二分查找实现,欢迎大家提出交流意见. /** *名称:BinarySearch *功能:实现了折半查找(二分查找)的递归和非递归算法. *说明: *     1.要求所查找的数组已有序,并且其 ...

  7. php折半查找面试题,php 面试题(一)

    最近转载一些面试题,希望能给找工作的朋友们带来一点帮助. 1.写出5个以上你所知道的常用的Linux命令和它的功能 cat,显示文件内容. cd,改变目录路径. cp,复制文件. find,查找文件. ...

  8. 网络工程师成长日记384-商南PIX防火墙网络项目回忆录

    网络工程师成长日记384-商南PIX防火墙网络项目回忆录 这是我的第384篇原创文章,记录网络工程师行业的点点滴滴,结交IT行业有缘之人 原文链接: http://www.xacisco.net/bl ...

  9. c语言实验报告 折半查找法,C语言数组之冒泡排序+折半查找法(二分查找)

    冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ...

  10. 折半查找判定树的画法(较简单易懂!)

    复习数据结构做的笔记: 折半查找判定树的画法思路: 1.先画出满足有序表长度的最大满二叉树,然后将剩下的结点个数一个个插入该树 2.从上往下看,比较每个结点的左右子树结点个数,如果左右子树结点个数相同 ...

最新文章

  1. jmeter 测试websocket接口(一)
  2. java图书馆管理系统_六天写出来的基于Swing的图书管理系统你不来吐槽一下?
  3. 经常使用的正则表达式
  4. 阿里P8架构师:淘宝技术架构从1.0到4.0的架构变迁!12页PPT详解
  5. cglib动态代理实现及其原理浅析
  6. SAP BAPI_SALESORDER_CREATEFROMDAT2 创建销售订单
  7. android nmea 工具,android – 如何从nmea句子信息计算以米为单位的gps准确度
  8. 35岁仍然落魄,有这3个苗头将大器晚成,你要刮目相看,主动结交
  9. 完美世界CEO萧泓:年轻化战略大有可为
  10. iosetup mysql_InnoDB:Error:io_setup()failedwithEAGAIN
  11. IAAS基于开源openstack框架搭建云计算平台和各组件基础搭建内容包括mysql、keyston、Glance、Nova、Neutron、Dashboard、Heat、Trove等
  12. 西电计算机学院崔江涛,“师德标兵”崔江涛:人才培养的研究者与实践者
  13. JDK1.8新特性Lambda表达式入门
  14. 换行样式不要首行缩进_正文样式设置必看:你知道最好不要直接在正文样式中设置首行缩进吗...
  15. java继承a mya new c,JAVA注解
  16. Python笔记之不可不练
  17. 深入Spring Boot:ClassLoader的继承关系和影响
  18. 1370:最小函数值(minval)
  19. 防火墙是什么?防火墙的五个主要功能
  20. 抓取豆瓣的电影排行榜TOP100

热门文章

  1. .Net中的设计模式——Strategy模式
  2. Intellij如何把JAR包加入到项目运行环境中
  3. ThinkPHP5.0 实现 app支付宝支付功能
  4. 一个导出redis有序集合sorted-sets的shell脚本
  5. window消息机制
  6. struts2 使用Validation框架进行数据验证
  7. http://www.cnblogs.com/huxj/archive/2009/11/21/1607791.html
  8. [7]2019-ICDM-Learning to Sample:an Active Learning Framework 论文笔记
  9. windows server 2008 r2 安装
  10. CSS三种引入方式 常用样式 CSS选择器