国产成人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》| 桃色视频| 扌击辶鬲的小说父女| BOBO浏览器(海外版)| 男朋友隔着衣服顶撞是什么心理现.. | 女人尝试到更粗大的心理变化| 女性左腿又开腿肚子视频大全| 女性左腿又开腿肚子视频大全| 成品免费PPT网站入口| 《我的漂亮老板娘》演员名单| 《善良的公与媳》| 《交换做爰》在线观看| 朋友的妈妈7中字谜| 羞答答在线观看免费高清电视剧 | 魔鬼天使 电影| 《再来一次好吗》日剧观看| 打扑克牌男女| 欧美大尺寸SUV的未来发展趋势| 二人世界高清视频播放| 教室停电 挺进她体内H| 老头握住淑蓉双乳| 浴室里强做开腿呻吟的H漫画| 7777影院免费观看电视剧大全 | 被带到满是X玩具的房间挑调游戏 合不拢腿(双)BY粗眉毛免费阅.. 军官(巨肉高H) | 小妖精你真要我的命| 《尼姑春心荡漾》大结局| 《厨房韵母2》动漫下线了吗 | 怀孕期间叫闺蜜来给老公消火| 女友小雪被房东老板玩| 被一条蛇C到崩溃车颜宁| 小婕子教我做爱| 电影《满足2》完整版在线观看| 《熟妇的荡欲》HD中字| 中文字幕精品无码亚洲字幕一区 | 17.C-起草口在哪| 雨后故事