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);
}

最新文章

  1. ABP源码分析十六:DTO的设计
  2. python3中返回字典的键
  3. IIS提示“异常详细信息: System.Runtime.InteropServices.ExternalException: 无法执行程序”
  4. 【编程题目】输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数, 使其和等于 m ... ★
  5. 在 Mac 上安装 sbt
  6. cmd常用命令 和 sql server相关基础
  7. 数据库与SQL语言
  8. javaWeb开发总结 ---- 前端数据插入到后台
  9. android读取远程图片案例
  10. FreeCodeCamp-JS基础部分
  11. UVA 1474 Evacuation Plan
  12. FreeMarker语法2
  13. JQuery的ready函数与JS的onload的区别详解
  14. 熟悉Git使用
  15. leetcode算法: Find Bottom Left Tree Value
  16. 海量数据挖掘MMDS week2: 频繁项集挖掘 Apriori算法的改进:非hash方法
  17. c#无边框窗体移动
  18. 软件工程(FZU2015) 赛季得分榜,第10回合(alpha冲刺)
  19. requests库入门02-简单了解HTTP协议
  20. 删除一个存在的RabbitMQ队列

热门文章

  1. jquery+ajax实现分页
  2. 关于sigwait
  3. 用canvas画环形圆形图片
  4. Apache部署django项目
  5. hibernate配置文件详细解析
  6. .Net Core[译文]
  7. 下载app后自动安装程序
  8. DataGrid新增行数据
  9. percona server 二进制安装下编译tpcc-mysql的坑
  10. Fortran 基础语法(一)