Java实现二分查找算法

栏目: Java · 发布时间: 5年前

内容简介:二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法。所以在采用二分法查找时,数据需是有序不重复的,如果是无序的也可通过选择排序、冒泡排序等数组排序方法进行排序之后,就可以使用二分法查找。基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功;若 x 小于当前位置值,则在数列的前半段中查找;若 x 大于当前位置值则在数列的后半段中继续查找,直到找到为止,但是如果当前段的索引最大值小于当前段索引最小值,说明查找的值不存在,返回-1,不继续查

二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法。所以在采用二分法查找时,数据需是有序不重复的,如果是无序的也可通过选择排序、冒泡排序等数组排序方法进行 排序 之后,就可以使用二分法查找。

基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功;若 x 小于当前位置值,则在数列的前半段中查找;若 x 大于当前位置值则在数列的后半段中继续查找,直到找到为止,但是如果当前段的索引最大值小于当前段索引最小值,说明查找的值不存在,返回-1,不继续查找。

下面贴出代码实现:

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * Created by Sam on 18/12/9.
 */
public class Test {
    public static void main(String[] args) {

        int[] array = {1,4,7,9,12,56,78,89,120,179,180,200,290};
        System.out.println("index="+binarySearch(array,290));
    }

    public static int binarySearch(int[] array,int searchNumber){

        int minIndex = 0;
        int maxIndex = array.length - 1;

        int searchIndex = (minIndex + maxIndex) >> 1 ;
        int count = 0;

        while (array[searchIndex] != searchNumber){

            System.out.printf("第次%d次运算\n", ++count);

            if (array[searchIndex] > searchNumber){
                maxIndex = searchIndex - 1 ;
            }else {
                minIndex = searchIndex + 1 ;
            }

            if (minIndex>maxIndex){
                return -1;
            }

            searchIndex = (minIndex + maxIndex) >> 1 ;
        }
        return searchIndex;
    }

}

最后更新于 2019-01-25 23:25:27 并被添加「java 二分查找 算法」标签,已有 2 位童鞋阅读过。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learning Web Design

Learning Web Design

Jennifer Niederst Robbins / O'Reilly Media / 2007-6-15 / USD 44.99

Since the last edition of this book appeared three years ago, there has been a major climate change with regard to web standards. Designers are no longer using (X)HTML as a design tool, but as a means......一起来看看 《Learning Web Design》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具