美文网首页Java 杂谈
三、Java版二分法

三、Java版二分法

作者: 编程界的小学生 | 来源:发表于2018-09-25 16:40 被阅读1次

一、核心思想

选定这批数据中居中间位置的一个数与所查数比较,看是否为所找的数,若不是,则利用数据的有效性,可以决定所找的数是在选定数的左侧还是右侧,从而很快可以将查找范围缩小一半。以同样的方法在选定区域中进行查找,每次都会将查找范围缩小一半,从而较快的找到目的数。
有个限制条件就是:必须是有序数组!

二、源码

package com.ctw;

/**
 * @author TongWei.Chen 2018-09-25 16:20:15
 * @Description:
 * @Project sjjg-sf
 */
public class BinaryFind {

    /**
     * 二分查找
     *
     * @param arr:数组
     * @param value:所需要找的值
     * @return: 目的值所在数组的下标
     */
    public static int binaryFind(long[] arr, long value) {
        // 开始值
        int start = 0;
        // 末尾值
        int end = arr.length - 1;
        while (start <= end) {
            // 中间值,二分法嘛,先取个中再说,每次进行二分的时候都需要重新计算中间值,所以放到循环里面。
            int middle = (start + end) / 2;
            // 1.如果碰巧了,目标值直接就是中间值
            if (value == arr[middle]) {
                return middle;
            } else if(value < arr[middle]) {
                // 2.若目标值比中间值小,那肯定是在中间值左侧,则继续从0到中间值这区间进行二分查找。
                end = middle - 1;
            } else {
                // 3.若目标值比中间值大,那肯定是在中间值右侧,则继续从中间值到末尾值这区间进行二分查找。
                start = middle + 1;
            }
        }
        // 若所找的数不在数组里,则返回-1;
        return -1;
    }

    public static void main(String[] args) {
        MyArray myArray = new MyArray();
        myArray.add(1L);
        myArray.add(2L);
        myArray.add(3L);
        myArray.add(4L);
        myArray.add(5L);
        myArray.add(6L);
        myArray.add(12L);
        myArray.add(20L);
        myArray.add(30L);
        myArray.add(33L);
        int index = binaryFind(myArray.getArr(), 331L);
        System.out.println(index);
    }

}

三、广告

相关文章

  • 三、Java版二分法

    一、核心思想 选定这批数据中居中间位置的一个数与所查数比较,看是否为所找的数,若不是,则利用数据的有效性,可以决定...

  • 用二分法计算a的n次幂<算法分析>

    实验目的: 1、复习java编程;2、掌握二分法的基本原理;3、掌握使用java程序进行二分法计算a的n次幂。 实...

  • 菜鸟学摄影--三分法构图

    今天学习三分法构图 这两张都是三分法构图 学得似懂非懂,还要多多练习。我交的作业 老师点评是三分法构图,但不是很标...

  • 学习修图D12

    人像三分法: 人像三分法构图,即把人物置于画面一侧的三等分线或黄金分割点上。 人像三分法构图的好处是,可以避免人像...

  • 十六号嘿嘿嘿

    还是对称 三分法

  • 【思维导图实战派】刻意练习之“遇见成长的自己”计划11/300:

    昨天的感悟是对一分法,二分法,三分法的思考: 一分法,说什么我都信或者说什么我都不信。 二分法:是说什么我会通过思...

  • 如何区分诗歌、散文和小说?

    文学作品的分类,常见有“三分法”和“四分法”。“三分法”,把各种各样的文学体裁依据塑造形象的不同方式划分为三个大类...

  • 星座简谈

    十二星座,起源于西方,早在隋朝便已传进中国。 十二星座分类:二分法、三分法、四分法 ...

  • 10月18日

    三分法 三角形

  • 摄影 | “三分法”你用对了吗?

    01 Hello,我是摄影师Wilson。 玩摄影童鞋无外乎都知道“三分法”这个经典的摄影法则。使用“三分法”,我...

网友评论

    本文标题:三、Java版二分法

    本文链接:https://www.haomeiwen.com/subject/yyeloftx.html