十七、二分查找法(java)
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)相关推荐
- 二分查找法---java实现
package com.hbut.test2; public class BinaryFind { public static void main(String[] args) { int arr[] ...
- java二分查找法_java算法之二分查找法的实例详解
java算法之二分查找法的实例详解 原理 假定查找范围为一个有序数组(如升序排列),要从中查找某一元素,如果该元素在此数组中,则返回其索引,否则返回-1.通过数组长度可取出中间位置元素的索引,将其值与 ...
- java 二分查找_计算机入门必备算法——二分查找法
1.引言 笔者对于计算机的研究一直停滞不前,近期想对一些算法进行复习和进一步的研究,每天都会更新一个新的算法,算法有难有易,层层递进.不希望能学的有多么高深,只希望在一些最基本的算法上有编码的思路,或 ...
- 学习练习 java 二分查找法
1 package com.hanqi; 2 3 import java.util.*; 4 5 public class Test5 { 6 7 public static void main(St ...
- java算法2_二分查找法
比如现在有个记录名单的字典,里面的名字是按A-Z的顺序排好的,现在我想找Lily这个人.我可以从第一页开始一页一页的翻,但显然这样效率太低了.我可以怎么做呢?首先我直接翻到字典的中间位置,假如发现这里 ...
- binarysearch java,java数据结构之二分查找法 binarySearch的实例
java数据结构之二分查找法 binarySearch的实例 折半查找法,前提是已经排好序的数组才可查找 实例代码: public class BinarySearch { int[] bArr; p ...
- 线性查找法java代码_Java线性查找和二分查找
Java线性查找和二分查找. 一 线性查找 定义:在一列给定的值中进行搜索,从一端开始逐一检查每个元素,直到找到所需元素的过程. 线性查找又称为顺序查找.如果查找池是某种类型的一个表,比如一个数组,简 ...
- java小练习题---冒泡排序+二分查找法
题目: 冒泡排序+二分查找法 代码: package scan; import java.util.Scanner; //import java.util.Scanner; public class ...
- (java)leetcode852 山脉数组的封顶索引(二分查找法找出数组中最大值的下标)(Peak Index in a Mountain Array)
题目描述: 我们把符合下列属性的数组 A 称作山脉: A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < ... ...
- 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+ ...
最新文章
- 以太坊:比特币 + 无限可能
- 【Node.js】2.开发Node.js选择哪个IDE 开发工具呢
- java bean spring_Java+Spring+Bean+注入方式
- 【转】 ConstraintLayout 完全解析 快来优化你的布局吧
- 626B. Cards
- SQL Server的导出导入方式有
- 边缘计算架构_边缘计算与开放基础架构的重要性
- 功能表单之人员构造器字段类型详解—JEPLUS软件快速开发平台
- 【Task2(2天)】特征工程
- android开发需要那些Java基础
- 解决: 小程序涉及提供天气查询等相关服务,请选择:工具-天气类目。微信小程序修改类目
- 知识图谱构建技术综述
- G120XA与S7-1200的Modubus通信(一)
- MySQL自增id溢出
- ERP实施心得(转)
- golang-ffmpeg-goav:视频拉流解码成YUVJ420P
- Ti437x LED裸机程序全解
- html标签onload,支持onload事件的HTML标签有哪些
- 网络设置、ssh服务
- 计算机硬件检测数据恢复理论知识,计算机硬件检测维与数据恢复赛项规程.doc...
热门文章
- 程序员的未来在哪里?赶紧看看!!
- 离异美女跟程序员相亲,结果自我介绍完就被秒删:三无送个儿
- 新版 chrome 将原生支持图片懒加载!
- 没想到啊!3980元的Web前端视频今日免费送。
- web前端警惕:意料之外的全局变量声明
- Adobe illustrator 多个对象进行环形布局 - 连载22
- VideoSolo Blu ray Player for Mac - 强大的蓝光播放器
- centos6配置mysql远程访问_Linux服务器配置-VSFTP服务配置(六)
- Qt文档阅读笔记-Threaded Fortune Server Example解析
- Ngnix笔记proxy_set_header设置X-Real-IP(Java获取客户端IP地址)