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

本文共 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

你可能感兴趣的文章
IO中同步、异步与阻塞、非阻塞的区别
查看>>
[置顶] ARM处理器学习之--GPIO操作篇(gnu link script)
查看>>
我的友情链接
查看>>
Mysql按条件计数的几种方法
查看>>
Weinre《调试使用》调试Mobile Web
查看>>
表格控件 Spread for WinForms 7 新特性-中文本地化增强
查看>>
编程这件小事儿之Java篇:Java四个核心概念
查看>>
Picor Cool-Power ZVS 降压稳压器介绍
查看>>
[git] 已经push的commit如何修改message
查看>>
MySQL: ERROR 1071 : Specified key was too long;...
查看>>
hive建表并load数据小结
查看>>
跨域访问
查看>>
io性能监控、free,ps命令、linux下抓包
查看>>
SylixOS中AARCH64的GDB调试实现
查看>>
宝石消除游戏核心实现算法
查看>>
基于 HTML5 Canvas 实现的文字动画特效
查看>>
PHP开发环境之WVL-NMP环境搭建
查看>>
javasimon
查看>>
Java集合(六)List概括,总结
查看>>
python2.7 链接MySQL 在Eclipse PyDev下 windows平台
查看>>