1.二分查找法思路:不断缩小范围,直到low <= high

2.代码:

 1 package Test;
 2
 3 import java.util.Arrays;
 4
 5 public class BinarySearch {
 6
 7     public static void main(String[] args) {
 8         int [] a = {1,5,7,9,11,12,16,20};
 9         int target = 16;
10         //System.out.println(Arrays.binarySearch(a, target));
11         System.out.println(binarySearch(a, target));
12     }
13
14     public static int binarySearch(int [] a, int target){
15         int low = 0;
16         int high = a.length - 1;
17
18         while (low <= high) {
19             int mid = (low + high) >>> 1;
20             int midVal = a[mid];
21
22             if (midVal < target)
23                 low = mid + 1;
24             else if (midVal > target)
25                 high = mid - 1;
26             else
27                 return mid; // key found
28         }
29         return -(low + 1);  // key not found.
30     }
31 }

3.结果:6

转载于:https://www.cnblogs.com/shamgod/p/4604376.html

Java-数据结构与算法-二分查找法相关推荐

  1. java 二分查找_计算机入门必备算法——二分查找法

    1.引言 笔者对于计算机的研究一直停滞不前,近期想对一些算法进行复习和进一步的研究,每天都会更新一个新的算法,算法有难有易,层层递进.不希望能学的有多么高深,只希望在一些最基本的算法上有编码的思路,或 ...

  2. Java数据结构与算法——线性查找 二分查找 插值查找

    1.线性查找 有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称[顺序查找] 要求: 如果找到了,就提示找到,并给出下标值. package com.szh. ...

  3. Java数据结构与算法 线性查找和二分查找

    查找 查找(searching)是在一组数据项中找到指定的目标元素(target element)或者判定组内不存在目标的过程.要查找的数据项组有事成为查找池(search pool). 在此讨论两种 ...

  4. 折半查找算法[二分查找法]算法的实现和解决整数溢出问题~

    算法实现的要求: 折半查找法又称为二分查找法,这种方法对待查找的列表有两个要求: 1:必须采用顺序存储结构 2:必须按关键字大小有序排列 算法思想: 将表中间位置记录的关键字与查找关键字进行比较,如果 ...

  5. 数据结构与算法 | 二分查找

    假如我们在图书馆中整理书记,书按照序号有序排序,序号不连续,当我们需要从书堆中找到特定序号的书时,如果一本一本查找的话,我们可能需要查找N次.但如果我们先找到中间的书,将书分成两堆,与待查书对比,待查 ...

  6. 小饶学编程之JAVA SE第一部分——二分查找法

    二分查找法 一.算法描述 二.算法原理 三.算法实现 四.总结 一.算法描述 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结 ...

  7. NTC测温中 经典温度查表算法--二分查找法

    说明: 二分查找法的优点:查找速度快 1024个长度的表最长只需10次查表就能得出结果 在用NTC测试温度的方案中,NTC的温度表的长度一般是100-200 有些达到400-500的长度 在这种情况下 ...

  8. java小练习题---冒泡排序+二分查找法

    题目: 冒泡排序+二分查找法 代码: package scan; import java.util.Scanner; //import java.util.Scanner; public class ...

  9. 每日一则----算法----二分查找法

    php实现二分查找法 二分查找法称折半查找,需要数组是一个有序的数组 假设我们的数组是一个递增的数组,首先我们需要找到数组的中间位置. 要知道中间位置就需要知道起始位置和结束位置,然后取出中间位置的值 ...

最新文章

  1. 动态路由选择协议简介
  2. 椭圆曲线加密算法(ECC)原理和C++实现源码(摘录)
  3. 【网址收藏】WSL安装docker(不折腾版)
  4. 原!操作 excel 03/07
  5. mysql 代码怎么优化_MySQL 性能优化的简略办法
  6. 自定义jackson序列化_Jackson中的自定义反序列化程序和验证
  7. SAP License:未分配差异的另类查询办法
  8. codeforces332B - Maximum Absurdity 线段数 or dp
  9. win7 桌面背景保存位置,告诉你源文件删除后如何找回
  10. 网站爬虫Python
  11. node在Fedora 22系统下开发环境搭建
  12. 阳明心学在敏捷开发中的应用
  13. 巧用京东物流分享链接批量查询多个京东快递的物流信息
  14. 大学计算机应用基础第二版习题答案,《大学计算机应用基础》各章习题参考答案...
  15. POI之Excel字体样式
  16. 人体红外传感器+蜂鸣器实现人体红外报警
  17. 小白都能学会的python+opencv,带你从人脸识别做到车牌识别,成为别人口中赞叹的高手!
  18. 一条宽带多人共享违法?
  19. 录制电脑桌面的gif图工具 GifCam
  20. 2021美国大学生数学建模竞赛F题翻译

热门文章

  1. android 应用专属目录,获取Android应用专属缓存存储目录的实例
  2. vue 同步加载_2019 前端面试题汇总(主要为 Vue)
  3. qt 复制字符串_Qt字符串处理 QString用法总结(一)
  4. canvas笔记-文本(fillText)旋转(rotate)
  5. C/C++ OpenCV图像的载入,显示,输出
  6. 计算机拼图形 比创意教案,拼图形比创意教学设计.doc
  7. Django之Mode的外键自关联和引用未定义的Model
  8. nio和bio的原理_Java的BIO,NIO和AIO的区别于演进
  9. python多线程爬虫框架_普通爬虫vs多线程爬虫vs框架爬虫,Python爬对比
  10. 基本汇编语言学习结构