搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半
int main()
{
int array[] = {
1,2,3,4,5,6,7,8,9};
int length = sizeof(array)/sizeof(array[0]);//用sizeof()获取数组的长度
int element;
scanf("%d",&element);
int location = binary_research(array,length,element);
if(location>=0)
printf("The element's location is %d\n",location);
else
printf("Don't exit this element.\n");
return 0;
}
//在有序表R[0..n-1]中进行二分查找,成功时返回结点的位置,失败时返回-1
int binary_research(int arr[],int length,int element)
{
int left=0,right=length-1; //置当前查找区间上、下界的初值
while(left<=right)
{
int mid = (left+right)/2;//会有整数溢出的问题,具体见函数说明
if(arr[mid]>element)
right = mid - 1; //继续在R[left..mid-1]中查找
else if(arr[mid]<element)
left = mid + 1; //继续在R[mid+1..right]中查找
else
return mid; //查找成功返回
}
return -1; //当 left>right 时表示所查找区间内没有结果,查找失败
}
因此改进后的程序为:
int binary_research(int array[],int length,int target)
{
int low=0,high=length-1;
while(low<=high)
{
int mid=low+(high-low)/2;//优化溢出问题
if(array[mid]>target)
high=mid-1;
else if(array[mid]<target)
low=mid+1;
else
return mid;
}
return-1;
}
另外一种写法:int binary_research(int arr[],int low,int high,int target);
#include<stdio.h>
int binary_research(int arr[],int low,int high,int target);
int main()
{
int array[] = {
1,2,3,4,5,6,7,8,9};//数组中的数(由小到大)
int length = sizeof(array)/sizeof(array[0]);//用sizeof()获取数组的长度
int low=0,high=length-1;
int element;
scanf("%d",&element);
int location = binary_research(array,low,high,element);
if(location>=0)
printf("The element's location is %d\n",location);
else
printf("Don't exit this element.\n");
return 0;
}
int binary_research(int array[],int low,int high,int target)
{
while(low<=high)
{
int mid=low+(high-low)/2;//优化溢出问题
if(array[mid]>target)
high=mid-1;
else if(array[mid]<target)
low=mid+1;
else
return mid;
}
return-1;
}
除此以外还可以使用 递归函数 实现折半查找:
//递归函数实现
int binary_research(int array[],int low,int high,int target)
{
int mid=low+(high-low)/2;//优化溢出问题
if(low>high)//查找完毕没有找到答案,返回-1
return -1;
else
{
if(array[mid]==target)
return mid;//找到!返回位置.
else if(array[mid]>target)
return binary_research(array,low,mid-1,target);//找左边
else
return binary_research(array,mid+1,high,target);//找右边
}
}
参考文章:
1.https://blog.csdn.net/qq_31828515/article/details/51791833
2.https://baike.baidu.com/item/二分查找/10628618?fr=aladdin
软件测试V模型缺点:测试进入比较晚(局限性)单元测试和集成测试:检测程序的执行是否满足软件设计的要求系统测试:检测系统功能是否达到系统要求的指标验收测试:确定软件的实现是否满足用户需求或合同要求软件测试W模型(双V模型)测试人员进入阶段:1.用户需求:了解需求范围、目的、背景,为验收测试做准备2.需求分析与系统设计:学习并分析需求,编写测试计划,为系统...
在接口的实现类上可以使用该注解,如果该实现类在扩展文件中,没有配置name,就可以通过@Extension注解,指定name
flume使用(一):入门demo flume使用(二):采集远程日志数据到MySql数据库 ...
今天是释然发题解的第十二天,以后每一天都会和大家分享学习路上的心得,希望和大家一起进步,一起享受coding的乐趣。本文约1600字,预计阅读5分钟昨天我们学习了深度优先搜索,忘记的小伙伴们可以看一下哦:深度优先搜索今天我们来聊一聊的宽度优先搜索和深度优先搜索的区别,明天和大家分享分治和贪心的相关知识:宽度优先搜索定义深入理解比较:优势和缺点总结模板分治和贪心定义宽度优先搜索( BFS,Breadth-First Search )也是搜索的手段之一。它与深度优先搜索类似,从某个状态出发探索所有
Java EE软件工程师认证考试面试题大全目 录 第一部分 HTML/CSS/JavaScript 11. HTML含义和版本变化... 12. 什么是锚链接... 13. HTML字符实体的作用及其常用字符实体... 14. HTML表单的作用和常用...
很多网友在上网冲浪的时候经常会觉得网页打开很缓慢,这时他们一般都会觉得是自己电脑网速太慢。虽然有一部分确实是网络速度太慢造成的,可是大家还是要检查一下是不是自己的网络有发生延迟现象。网络延迟就是指本身电脑网速是很快的,但是在使用一些应用的时候,例如:浏览器,聊天工具等等。这时就会感觉网速特别慢,那么如何知道自己是网络延迟还是网速慢呢?我们一起来看下方的查看教程吧!方法步骤:1、使用鼠标单击屏幕下方...
环境搭建https://golang.org/dl/到官网下载go的编译环境,需要翻墙,windows下载选择go1.4.2.windows-amd64.msi,其他系统选择对应的文件安装完成后添加相应的环境变量GOROOT(go的安装路径,windows下默认为c:\go),修改PATH,增加go安装目录下的bin文件夹,即%GOROOTH%\bin打开cmd 输入 go v
其实也可这样干:假如有个库文件是libtest.a可以在这个地方跟加MATH_LIB = -lm \ libtest.a大约在Makefile240多行 MATH_LIB = -lm TW2835_LIB_PATH = TW2835/lib TW2835_LIB = -ltw2835# List any extra direc
如今比较好就是CWM-Recovery,recovery模式一般都是全英文的,大家看起来很麻烦,可能就是一头雾水,下面安卓后院就为大家整理了recovery菜单的中英文对照翻译。希望通过这个recovery介绍能够帮助到大家。首先说下进入recovery的方法:1、将手机完全关机后,按住音量键下+电源键,进入bootloader界面;2、按音量键将光标移动到recovery那一行;3、按电源键,之...
new X509Certificate2(pfxFileName, password, X509KeyStorageFlags.Exportable);new X509Certificate2(cerPath); 由于最近在做银行支付接口对接遇到一个本地调试成功,部署服务器就 “系统找不到指定的文件” 翻了很多文章都是是证书文件夹权限问题,各种可读可写权限账号...
由于都是用于描述网页文档的文件,自学asp.net起就对两者之间的关系很好奇主要的区别在于,当用户请求页面时,它们在服务器的端的处理不同下图解释客户端请求页面时,服务器端的处理流程: .html文件Ø .html文件是基于HTML的静态网页,它的内容是固定不变的。其页面内容使用的仅仅是标准的HTML代码,最多再加上流行的gif、flash等格式的动态图
最终效果图码云地址: 小程序层叠轮播图