编程成长日记——折半查找
编写一个折半查找函数
#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
编程成长日记——折半查找相关推荐
- 编程成长日记——有意思的编程题(二)
//5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 //A选手说:B第一,我第三. //B选手说:我第二,E第四. //C选手说:我第一,D第二. //D选手说:C最后,我第三. //E选手 ...
- vue替换全部符合’字符串_技术成长日记-Vim实用技巧-4.7查找替换
1. 普通查找 / 向下查找 ? 向上查找 n 查找下一个目标字符串 N 查找上一个目标字符串 q/ 回溯查找历史,输入该命令后会在状态栏上方显示一个查找历史回溯窗口,如图4.1: 图4.1 回溯查找 ...
- D-OJ刷题日记:折半查找 题目编号:518
折半查找 题目编号:518 题目描述 评论 定义一个整型数组r,用于存储关键码集合,其中r[1]~r[n]用于存储有效的关键码,r[0]留作它用,注意该数组按关键码有序.按照折半查找方法,查找在关键码 ...
- Python二分查找/折半查找算法详解--(面试常考)
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 二分查找也称折 ...
- 测试开发工程师成长日记018 - 测试面试必备题记录(持续更新)
技术模块 一.在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试? 建立测试计划,确定测试标准和测试范围 设计典型场景的测试用例,覆盖常用业务流程和不常用的业务流程等 ...
- Java实现折半查找(二分查找)的递归和非递归算法
Java二分查找实现,欢迎大家提出交流意见. /** *名称:BinarySearch *功能:实现了折半查找(二分查找)的递归和非递归算法. *说明: * 1.要求所查找的数组已有序,并且其 ...
- php折半查找面试题,php 面试题(一)
最近转载一些面试题,希望能给找工作的朋友们带来一点帮助. 1.写出5个以上你所知道的常用的Linux命令和它的功能 cat,显示文件内容. cd,改变目录路径. cp,复制文件. find,查找文件. ...
- 网络工程师成长日记384-商南PIX防火墙网络项目回忆录
网络工程师成长日记384-商南PIX防火墙网络项目回忆录 这是我的第384篇原创文章,记录网络工程师行业的点点滴滴,结交IT行业有缘之人 原文链接: http://www.xacisco.net/bl ...
- c语言实验报告 折半查找法,C语言数组之冒泡排序+折半查找法(二分查找)
冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ...
- 折半查找判定树的画法(较简单易懂!)
复习数据结构做的笔记: 折半查找判定树的画法思路: 1.先画出满足有序表长度的最大满二叉树,然后将剩下的结点个数一个个插入该树 2.从上往下看,比较每个结点的左右子树结点个数,如果左右子树结点个数相同 ...
最新文章
- jmeter 测试websocket接口(一)
- java图书馆管理系统_六天写出来的基于Swing的图书管理系统你不来吐槽一下?
- 经常使用的正则表达式
- 阿里P8架构师:淘宝技术架构从1.0到4.0的架构变迁!12页PPT详解
- cglib动态代理实现及其原理浅析
- SAP BAPI_SALESORDER_CREATEFROMDAT2 创建销售订单
- android nmea 工具,android – 如何从nmea句子信息计算以米为单位的gps准确度
- 35岁仍然落魄,有这3个苗头将大器晚成,你要刮目相看,主动结交
- 完美世界CEO萧泓:年轻化战略大有可为
- iosetup mysql_InnoDB:Error:io_setup()failedwithEAGAIN
- IAAS基于开源openstack框架搭建云计算平台和各组件基础搭建内容包括mysql、keyston、Glance、Nova、Neutron、Dashboard、Heat、Trove等
- 西电计算机学院崔江涛,“师德标兵”崔江涛:人才培养的研究者与实践者
- JDK1.8新特性Lambda表达式入门
- 换行样式不要首行缩进_正文样式设置必看:你知道最好不要直接在正文样式中设置首行缩进吗...
- java继承a mya new c,JAVA注解
- Python笔记之不可不练
- 深入Spring Boot:ClassLoader的继承关系和影响
- 1370:最小函数值(minval)
- 防火墙是什么?防火墙的五个主要功能
- 抓取豆瓣的电影排行榜TOP100
热门文章
- .Net中的设计模式——Strategy模式
- Intellij如何把JAR包加入到项目运行环境中
- ThinkPHP5.0 实现 app支付宝支付功能
- 一个导出redis有序集合sorted-sets的shell脚本
- window消息机制
- struts2 使用Validation框架进行数据验证
- http://www.cnblogs.com/huxj/archive/2009/11/21/1607791.html
- [7]2019-ICDM-Learning to Sample:an Active Learning Framework 论文笔记
- windows server 2008 r2 安装
- CSS三种引入方式 常用样式 CSS选择器