Java开发中经典的小实例-(二分法)
2024-10-13 05:49:11
public int binarySearch(int[] data,int aim){//以int数组为例,aim为需要查找的数
int start = 0;
int end = data.length-1;
int mid = (start+end)/2;//a
while(data[mid]!=aim&&end>start){//如果data[mid]等于aim则死循环,所以排除
if(data[mid]>aim){
end = mid-1;
}else if(data[mid]<aim){
start = mid+1;
}
mid = (start+end)/2;//b,注意a,b
}
return (data[mid]!=aim)?-1:mid;//返回结果
----------------------------------------------------------------------------------------------------------------
//针对已经排序好的数组进行查找(对上面代码进行的改进)
publicstaticbooleanbinarySearch(
int
[]array,inttarget){
intleft=
0
;
intright=array.length-
1
;
intmid=(left+right)/
2
;
while
(array[mid]!=target&&right>left){
if
(array[mid]>target){
right=mid-
1
;
}
elseif(array[mid]<target){
left=mid+
1
;
}
mid=(left+right)/
2
;
//判断在缩小范围后,新的left或者right是否会将target排除
if
(array[right]<target){
break
;
//若缩小后right比target小,即target不在数组中
}
elseif(array[left]>target){
break
;
//若缩小后left比target大,即target不在数组中
}
}
return
(array[mid]==target);
}
最新文章
- ABP源码分析十六:DTO的设计
- python3中返回字典的键
- IIS提示“异常详细信息: System.Runtime.InteropServices.ExternalException: 无法执行程序”
- 【编程题目】输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数, 使其和等于 m ... ★
- 在 Mac 上安装 sbt
- cmd常用命令 和 sql server相关基础
- 数据库与SQL语言
- javaWeb开发总结 ---- 前端数据插入到后台
- android读取远程图片案例
- FreeCodeCamp-JS基础部分
- UVA 1474 Evacuation Plan
- FreeMarker语法2
- JQuery的ready函数与JS的onload的区别详解
- 熟悉Git使用
- leetcode算法: Find Bottom Left Tree Value
- 海量数据挖掘MMDS week2: 频繁项集挖掘 Apriori算法的改进:非hash方法
- c#无边框窗体移动
- 软件工程(FZU2015) 赛季得分榜,第10回合(alpha冲刺)
- requests库入门02-简单了解HTTP协议
- 删除一个存在的RabbitMQ队列