Binary Search 有时候我们也把它叫做二进制查找

是一种较为高效的再数组中查找目标元素的方法

我们可以通过递归和非递归两种方式来实现它

    //非递归
public static int binarySearch(int[] arr, int x) {
int low = 0;
int high = arr.length-1;
while(low <= high) {
int middle = (low + high)/2;
if(x == arr[middle]) {
return middle;
}else if(x <arr[middle]) {
high = middle - 1;
}else {
low = middle + 1;
}
}
return -1;
}
//递归实现二分查找
public static int binarySearch(int[] dataset,int data,int beginIndex,int endIndex){
int midIndex = (beginIndex+endIndex)/2;
if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex){
return -1;
}
if(data <dataset[midIndex]){
return binarySearch(dataset,data,beginIndex,midIndex-1);
}else if(data>dataset[midIndex]){
return binarySearch(dataset,data,midIndex+1,endIndex);
}else {
return midIndex;
}
}

  时间复杂度是O(log2 n)的,最差情况是log2(n+1)

最新文章

  1. C#开发微信门户及应用(30)--消息的群发处理和预览功能
  2. 性能测试框架Locust初学笔记
  3. 关于TCP的粘包
  4. 基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
  5. 【超详细教程】使用Windows Live Writer 2012和Office Word 2013 发布
  6. 创建parameter id
  7. 在Android手机上安装linux系统
  8. windows Nginx基本使用方法
  9. C#区域截图&mdash;&mdash;调用API截图
  10. 【Alpha】——Seventh Scrum Meeting
  11. ORACLE DB TRIGGER详解
  12. window批处理修改计算机名
  13. Bootstrap -- 文本,背景,其他样式
  14. flask之wtforms
  15. Codeforces Round #512 (Div. 2) D. Vasya and Triangle
  16. CSS计数器(序列数字字符自动递增)详解———张鑫旭
  17. java中的设计模式一 装饰模式
  18. css 设置背景图片铺满固定不动
  19. Exce行列变色
  20. Mybatis最入门---代码自动生成(generatorConfig.xml配置)

热门文章

  1. 机器学习: Tensor Flow with CNN 做表情识别
  2. asp.net (webapi) core 2.1 跨域配置
  3. 解决MacOS下readlink: illegal option -- f
  4. 利用最小二乘法拟合任意次函数曲线(C#)
  5. NetCore 上传,断点续传,可支持流上传
  6. Win8 Metro(C#)数字图像处理--2.60部分彩色保留算法
  7. php 如何利用 soap调用.Net的WebService asmx文件
  8. MySql5.7.11 for Windows 安装(二)
  9. 在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程!(更好的管理异常)
  10. windows和linux双系统,重新分区后修复grub