假设有一个数组 { 12, 23, 34, 45, 56, 67, 77, 89, 90 },现要求采用二分法找出指定的数值并将其在数组的索引返回,如果没有找到则返回 -1。代码如下:

package cn.sunzn.dichotomy;

public class DichotomySearch {
public static void main(String[] args) {
int[] arr = new int[] { 12, 23, 34, 45, 56, 67, 77, 89, 90 };
System.out.println(search(arr, 12));
System.out.println(search(arr, 45));
System.out.println(search(arr, 67));
System.out.println(search(arr, 89));
System.out.println(search(arr, 99));
} public static int search(int[] arr, int key) {
int start = 0;
int end = arr.length - 1;
    // 将开始和结束的下标进行比较,如果不一致则遍历下一个
while (start <= end) {
      // 取到中间的下标
int middle = (start + end) / 2;
      // 如果需要计算下标的 数组值比中间下标的数组值小,则在数组前一半中进行查找,即 将结束值-1
if (key < arr[middle]) {
end = middle - 1;
// 如果需要计算的值比中间值大,则在数组后半段查找,即将开始值+1
} else if (key > arr[middle]) {
start = middle + 1;
        // 依次遍历后,根据开始和结束的值依次变化后查找到最终的需要计算下标值的数组下标
} else {
return middle;
}
}
return -1;
}
}

最新文章

  1. printf对齐
  2. cookie编码乱码问题与cookie禁用后session操作
  3. Java文件选择对话框(文件选择器JFileChooser)的使用:以一个文件加密器为例
  4. 关于 微软必应词典客户端(pc) 的案例分析
  5. GPS坐标换算为百度坐标
  6. phpmyadmin使用中碰到的一些问题
  7. SqlBulkCoy和普通数据库操作执行速度对比
  8. 【剑指offer】二叉树中和为某一值的路径
  9. 工作中用到的Jquery特效
  10. Scala学习文档-访问修饰符
  11. Oracle ORA-01555(快照过旧)
  12. CSS 注意事项
  13. 【解决方法】System.IO.FileNotFoundException
  14. cp复制文件到多个目录下及强制覆盖
  15. [SDOI2008]Sue的小球
  16. seg:NLP之正向最大匹配分词
  17. 因写太多 BUG!程序员遭公司颁奖羞辱,做的一个比一个绝​
  18. Handler使用中可能引发的内存泄漏
  19. linux centos6.8搭建 jdk 环境
  20. heightchart配置详解

热门文章

  1. flutter安装教程(win7)
  2. 初识ldap
  3. 突破防盗链Referrer
  4. 爬虫(四)requests模块1
  5. qtp中type方法的按键常量
  6. STL 小白学习(10) map
  7. 本人亲身讲解本科期间学习Linux系统过程
  8. java课堂笔记
  9. thinkphp5和thinkphp3.2.3中URL重写出现No input file specified
  10. 完全关闭及再次启动cdh集群