博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
202702算法_二分法查找
阅读量:5050 次
发布时间:2019-06-12

本文共 1239 字,大约阅读时间需要 4 分钟。

二分法查找

1.综述

 二分法检索(binary search)又称折半检索,二分法检索是一种效率较高的检索方法。

 



 

 

2.简介

2.1 基本思想

设数组中的元素从小到大有序地存放在数组(array)中,

首先将给定值key与数组中间位置上元素的关键码(key)比较,

如果相等,则检索成功;

否则,若key小,则在数组前半部分中继续进行二分法检索;

若key大,则在数组后半部分中继续进行二分法检索。

这样,经过一次比较就缩小一半的检索区间,

如此进行下去,直到检索成功或检索失败。

2.2 流程

在数组[7, 8, 9, 10, 12, 20, 30, 40, 50, 80, 100]中查询到10元素,过程如下:

 

2.3 代码

import java.util.Arrays;public class Test {    public static void main(String[] args) {        int[] arr = { 30,20,50,10,80,9,7,12,100,40,8};        int searchWord = 20; // 所要查找的数        Arrays.sort(arr); //二分法查找之前,一定要对数组元素排序        System.out.println(Arrays.toString(arr));        System.out.println(searchWord+"元素的索引:"+binarySearch(arr,searchWord));    }     public static int binarySearch(int[] array, int value){        int low = 0;        int high = array.length - 1;        while(low <= high){            int middle = (low + high) / 2;            if(value == array[middle]){                return middle;         //返回查询到的索引位置            }            if(value > array[middle]){                low = middle + 1;            }            if(value < array[middle]){                high = middle - 1;            }        }        return -1;     //上面循环完毕,说明未找到,返回-1    }}

 

转载于:https://www.cnblogs.com/ZanderZhao/p/10889102.html

你可能感兴趣的文章
黑马 StringBuffer
查看>>
dedecms /include/uploadsafe.inc.php SQL Injection Via Local Variable Overriding Vul
查看>>
ThinkPHP--浏览历史
查看>>
iptables
查看>>
mysql常用函数
查看>>
xml=>数组
查看>>
Python全栈开发
查看>>
HDU 5171 GTY's birthday gift 矩阵快速幂
查看>>
原生JS获取url汇总
查看>>
设置session生存时间问题
查看>>
CentOS 添加新的硬盘之后不停机操作
查看>>
3.1 一个简单的Java应用程序
查看>>
函数笔记
查看>>
正则表达式补充
查看>>
Vue中全局和按需引入Echarts
查看>>
框架目录
查看>>
MSSql技巧之快速得到表的记录总数
查看>>
RDIFramework.NET — 基于.NET的快速信息化系统开发框架 - 5.3 数据库连接管理模块...
查看>>
Webservice测试从头来
查看>>
no such table
查看>>