博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分搜索法查找
阅读量:6259 次
发布时间:2019-06-22

本文共 1033 字,大约阅读时间需要 3 分钟。

算法要求

1、必须采用;

2.必须按关键字大小有序排列。

算法复杂度

假设其 长度为n,其算法复杂度为o(log(n))
下面提供一段二分查找实现的 :
BinarySearch(max,min,des)
mid-<(max+min)/2
while(min<=max)
mid=(min+max)/2
if mid=des then
return mid
elseif mid >des then
max=mid-1
else
min=mid+1
return max
折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如 果x<a[n/2],则我们只要在 a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果x>a[n/2],则我们只要在数组a的右 半部继续搜索x。
 
代码示例
 
JAVA代码
1 public static int binarySearch(Integer[] srcArray, int des) { 2     int low = 0; 3     int high = srcArray.length - 1; 4   5     while ((low <= high) && (low <= srcArray.length - 1) 6             && (high <= srcArray.length - 1)) { 7         int middle = low + ((high - low) >> 1); 8         if (des == srcArray[middle]) { 9             return middle;10         } else if (des < srcArray[middle]) {11             high = middle - 1;12         } else {13             low = middle + 1;14         }15     }16     return -1;17 }
View Code

 

转载于:https://www.cnblogs.com/zxw0004/p/4864436.html

你可能感兴趣的文章
走红日本 阿里云如何能够赢得海外荣耀
查看>>
qt 学习之路2
查看>>
线上应用故障排查之二:高内存占用
查看>>
异常处理汇总 ~ 修正果带着你的Code飞奔吧!
查看>>
PCIE_DMA:xapp1052学习笔记
查看>>
python ----字符串基础练习题30道
查看>>
uva-10879-因数分解
查看>>
python 调用aiohttp
查看>>
跨域iframe高度自适应(兼容IE/FF/OP/Chrome)
查看>>
学习鸟哥的Linux私房菜笔记(8)——文件查找与文件管理2
查看>>
升级fedora 18到fedora 19
查看>>
11月20日学习内容整理:jquery插件
查看>>
SVN与TortoiseSVN实战:补丁详解
查看>>
获取页面中所有dropdownlist类型控件
查看>>
读《淘宝数据魔方技术架构解析》有感
查看>>
[转载]如何破解Excel VBA密码
查看>>
【BZOJ】2563: 阿狸和桃子的游戏
查看>>
redis 中文字符显示
查看>>
顺序图【6】--☆☆
查看>>
Docker Swarm 让你事半功倍
查看>>