国产成人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数组

关注

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

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

《交换温柔》免费观看全集完整版| 奶头被教练摸得受不了| 少妇高潮久久久久久| 《家政女孩2》免费观| 网曝黑料猛料吃瓜网| 啵啵影院| 成品人和精品人的区别在哪里知乎 | 欧美一区二区| 一家五口混乱的家庭怎么形容| 做完放里面睡觉醒了继续| 苍井空《办公室爱欲》| 学生妹高清版免费观看电视剧 | 永久免费无代码开发平台网站| 《女仆教育》动漫第一季 | 禁忌4大结局| 韩剧| 小莹的性荡生活第15章| 熟悉的味道3| B站夫妻进入高峰期需要多久| 《法国空乘4》在线观看| 女人被濯满精子后多久排卵期| 日韩无矿砖区转吗| 《完美邻居2》电影在线观看| UFOTABLE| 赠刘景文| 免费B站看大片真人电视剧 | 《再来一次好吗》免费观看| 挤公交忘穿内裤被挺进H视频 | 欧美叔叔别撩我免费观看电视剧| 浪妇荡SAO嗯啊~轻点H漫画 | 少妇高潮免费观看A片| 公车上双乳被两男人夹击电影| 东北老肥熟口味重的原因分析| 老师和学生深入交流人生奥秘| 《交换做爰》在线观看| 品色TANG| 意大利女性教育史| 《温柔的大姐姐》动漫免费观看| 美国大片免费观看2022年上映 | 《交换做爰》在线观看| 三人互换麦子