国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > java数组 > java二分法如何找寻数组的位置

java二分法如何找寻数组的位置

头像

小妮浅浅

2021-02-23 11:24:576674浏览 · 0收藏 · 0评论

我们在对数组的元素进行查找时,学习了不少的找寻方法,二分法可以说是比较基础的查询手段了。不过本篇所要对大家进行考验的,可以对数组的参数组进行一个定位,想必大家还没有接触过这种方法。下面我们对java二分法进行说明,然后展开有关的实例讲解,一起来看看吧。

1、二分法说明

二分法的核心思想就是索引的移动,查找速度是几何级递增的。

二分查找法,返回查找到数组元素的索引,如果找不到返回-1

2、实例

二分法定位参数值在数组中的位置

场景描述:

根据一个参数值找到它在数组内的下标区间,例如: 2在数组{0,1,3,5}的区间为{1,2}

package com.study.collection;
 
import java.util.Arrays;
 
/**
 * @auth zhangmj
 * @date 2019/2/12 9:14
 */
public class ExampleList<T> {
 
    public static void main(String[] args) {
        int[] intArray = {0,1,2,10,15,20,25,29,31,36,39,40,42,43,46,50,55,60,63,66,70};
        int num =2;
        int[] resultArray = getPostionByTwoPoint(intArray, num);
        System.out.println(Arrays.toString(resultArray));
    }
 
    private static int[] getPostionByTwoPoint(int[] intArray, int num) {
        // 判断
        if(intArray == null || intArray.length == 0){
            throw new RuntimeException("数组不能为空");
        }
        // 定义最小和区间
        if(intArray[0] > num || intArray[intArray.length - 1] < num){
            throw new RuntimeException("不在数组范围之内");
        }
 
        int middle = 0;
        int low = 0;
        int high = intArray.length - 1;
        // 定义首尾特殊的情况
        if(intArray[low] == num){
            int[] resultArray = {low, low};
            return resultArray;
        }else if(intArray[high] == num){
            int[] resultArray = {high, high};
            return resultArray;
        }
        int i = 1;
        // 数在中间的情况
        while(low < high){
            System.out.println("查找第 " + i + " 次");
            middle = (low + high + 1)/2;
            if(intArray[middle] == num){
                int[] resultArray = {middle, middle};
                return resultArray;
            }else if(intArray[middle] > num){
                // num 在 low 和 middle 之间
                int previous = middle - 1;
                if(previous > low  && intArray[previous] < num){
                    int[] resultArray = {previous, middle};
                    return resultArray;
                }
                high = middle;
            }else if(intArray[middle] < num){
                int latter = middle + 1;
                if(latter < high  && intArray[latter] > num){
                    int[] resultArray = {middle, latter};
                    return resultArray;
                }
                low = middle;
            }
            i++;
        }
        throw new RuntimeException("定位异常");
    }
}

以上就是java二分法找寻数组位置的方法,对于做数组的查找来说,算是比较便捷的手段了。大家可以根据上面的场景实例,进行使用的体会。更多Java学习指路:java数组

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

三个领导换着躁我几小时在线观看| 美女热舞| 《妻子的肉体偿还》5| 《男医生的特殊治疗》| 《入室暴行》国语| 坤坤寒入桃子里电视剧| 公交车大肉大捧一进一出好爽| 9.1芒果浏览器| 我被5个男人躁一夜不收我怎么办 两男吮她的花蒂和奶水视频 | 女友躲雨被老头玩弄| 舌头底下舔着有小硬疙瘩视频| 上司趁老公不在到家拜访| 周翊然| 笔记本散热垫| 扌暴辶鬲和扌暴辶的区别| MIAKHALIFA| 人犬兽人在线观看免费完整一| 里番| 国产X7X7X7X7X7 性价..| 李丽珍图片| 一枪战三母2雪姨是哪个角| 7777777亚洲和欧洲尺码表| 7777777亚洲和欧洲尺码表 | 《请好好疼爱里面》免费观看| 美女和男生一起努力的生孩子视频..| 两个奶头被吃得又翘又肿特别疼 | 《请好好疼爱里面》免费观看| 快拨出天我是你母亲歌词监控| 韩国我是歌手| 支离破碎完整版播放| 少女韩国免费观看高清电视剧八戒 | DO时不堪入耳的话的| 12美国禁忌| 少女たちよ观看免费高清电视剧| 交换老公弄了几次高潮| 伦理《少妇的滋味》完整版| 大肉大捧一进一出XXOO| 《共享弟夫》动漫在线观看免费| 老赵在货车把儿媳妇送到了| 日本在线观看| 女性俱乐部LOGO