韩漫免费漫画在线观看方法,《好好疼爱里面》免费看,年轻漂亮的女士护士内衣,妈妈醉酒后把我当爸爸电视剧

文章 > 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数组

关注

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

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

BOBO浏览器老司机模式改版特..| 老公把闺蜜干的嗷嗷叫| 夹心玩具BY笔趣阁| 小蓝| 广汇能源股吧| 人犬兽人在线观看免费完整| 人狗大战5高清正版免费观看| 女性扒开大腿内侧小肚子痒| 干露露和干毛毛的身材对比照片| 我穿水被同桌C出水了H漫画| 久旱逢甘霖(父女)笔端| 佐藤江梨花| 美女两个球球抖动抓球球视频| 二十电影| 第79章厨房的欢愉方晴| 三年大片免费观看完整版高清| 乱公伦媳..HH| 《老公请部长家里吃饭》日剧 | 韩国吻戏视频| 女人做爰高潮全黄| 《黏糊糊的你》免费观看 | 在线视频| 坤坤寒进桃子里在线看歌词| 《诱人的女房东3》| 他扒开我小沉添我三男一女视频| 开档比基尼内衣超薄| 坠落的清纯校花沈清清小说| 女人吃精子的好处与功效| 女生频道| 把腿扒开让我添30分钟| 边摸边脱吃奶边高潮视频免费| 双男主MV大片| BGMBGMBGM毛多老太| 高H文| 无码粉嫩小滨无套在线观看...| 姐姐的闺蜜2字ID高冷霸气| 按摩店的待遇5HD| 自慰视频| 《麦子的秘密2》在线观看| 校长办公室莹莹岔开腿呻吟AV| 坤坤赛进桃子里在线看歌词