1.二分查找又称折半查找,它是一种效率较高的查找方法。

2.二分查找要求:(1)必须采用顺序存储结构 (2).必须按关键字大小有序排列

3.原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前 面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过程,将前半部分或者后半部分继续分解为三部分。

4.实现:二分查找的实现用递归和循环两种方式

5.代码

package other;public class BinarySearch {/** 循环实现二分查找算法arr 已排好序的数组x 需要查找的数-1 无法查到数据*/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;    }    }   public static void main(String[] args) {int[] arr = { 6, 12, 33, 87, 90, 97, 108, 561 };System.out.println("循环查找:" + (binarySearch(arr, 87) + 1));System.out.println("递归查找"+binarySearch(arr,3,87,arr.length-1));}
}

十七、二分查找法(java)相关推荐

  1. 二分查找法---java实现

    package com.hbut.test2; public class BinaryFind { public static void main(String[] args) { int arr[] ...

  2. java二分查找法_java算法之二分查找法的实例详解

    java算法之二分查找法的实例详解 原理 假定查找范围为一个有序数组(如升序排列),要从中查找某一元素,如果该元素在此数组中,则返回其索引,否则返回-1.通过数组长度可取出中间位置元素的索引,将其值与 ...

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

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

  4. 学习练习 java 二分查找法

    1 package com.hanqi; 2 3 import java.util.*; 4 5 public class Test5 { 6 7 public static void main(St ...

  5. java算法2_二分查找法

    比如现在有个记录名单的字典,里面的名字是按A-Z的顺序排好的,现在我想找Lily这个人.我可以从第一页开始一页一页的翻,但显然这样效率太低了.我可以怎么做呢?首先我直接翻到字典的中间位置,假如发现这里 ...

  6. binarysearch java,java数据结构之二分查找法 binarySearch的实例

    java数据结构之二分查找法 binarySearch的实例 折半查找法,前提是已经排好序的数组才可查找 实例代码: public class BinarySearch { int[] bArr; p ...

  7. 线性查找法java代码_Java线性查找和二分查找

    Java线性查找和二分查找. 一 线性查找 定义:在一列给定的值中进行搜索,从一端开始逐一检查每个元素,直到找到所需元素的过程. 线性查找又称为顺序查找.如果查找池是某种类型的一个表,比如一个数组,简 ...

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

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

  9. (java)leetcode852 山脉数组的封顶索引(二分查找法找出数组中最大值的下标)(Peak Index in a Mountain Array)

    题目描述: 我们把符合下列属性的数组 A 称作山脉: A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < ... ...

  10. java for循环和数组--冒泡排序、二分查找法

    //100以内与7相关的数 for(int a=1;a<=100;a++){     if(a%7==0||a%10==7||a/10==7){      System.out.print(a+ ...

最新文章

  1. 以太坊:比特币 + 无限可能
  2. 【Node.js】2.开发Node.js选择哪个IDE 开发工具呢
  3. java bean spring_Java+Spring+Bean+注入方式
  4. 【转】 ConstraintLayout 完全解析 快来优化你的布局吧
  5. 626B. Cards
  6. SQL Server的导出导入方式有
  7. 边缘计算架构_边缘计算与开放基础架构的重要性
  8. 功能表单之人员构造器字段类型详解—JEPLUS软件快速开发平台
  9. 【Task2(2天)】特征工程
  10. android开发需要那些Java基础
  11. 解决: 小程序涉及提供天气查询等相关服务,请选择:工具-天气类目。微信小程序修改类目
  12. 知识图谱构建技术综述
  13. G120XA与S7-1200的Modubus通信(一)
  14. MySQL自增id溢出
  15. ERP实施心得(转)
  16. golang-ffmpeg-goav:视频拉流解码成YUVJ420P
  17. Ti437x LED裸机程序全解
  18. html标签onload,支持onload事件的HTML标签有哪些
  19. 网络设置、ssh服务
  20. 计算机硬件检测数据恢复理论知识,计算机硬件检测维与数据恢复赛项规程.doc...

热门文章

  1. 程序员的未来在哪里?赶紧看看!!
  2. 离异美女跟程序员相亲,结果自我介绍完就被秒删:三无送个儿
  3. 新版 chrome 将原生支持图片懒加载!
  4. 没想到啊!3980元的Web前端视频今日免费送。
  5. web前端警惕:意料之外的全局变量声明
  6. Adobe illustrator 多个对象进行环形布局 - 连载22
  7. VideoSolo Blu ray Player for Mac - 强大的蓝光播放器
  8. centos6配置mysql远程访问_Linux服务器配置-VSFTP服务配置(六)
  9. Qt文档阅读笔记-Threaded Fortune Server Example解析
  10. Ngnix笔记proxy_set_header设置X-Real-IP(Java获取客户端IP地址)