如何用二分法查找数组内容下标

  在面对大量数据时,二分法可高效查找数组数据(本文为一维数组)

package com.lanling.javase.array;

import java.util.Scanner;//导入java.util.Scanner包,做后续接受用户键盘数据之用


public class Array01 {
    public static void main(String[] args) {
        //定义数组数据,必须按从小到大的顺序

        int[] arr = {12, 34, 54, 64, 66, 75, 85, 523523};

        //代码实现查找数据

        while (true) {    //while 语句可实现用户的重复输入

            //接收用户数据
            Scanner s = new Scanner(System.in);
            System.out.print("请输入想要寻找的数:");
            int i = s.nextInt();

            //定义查找方法cahZhao,arr为数组,i为用户查找数据

            int index = chaZhao(arr, i);

            //三目运算符实现判断下标
            System.out.println(index == -1 ? "该元素不存在" : "下标为:" + index);
        }
    }

    /**
     * 从数组中查找目标元素的下标
     * @param arr 被查找的数组
     * @param dest 目标元素
     * @return -1表示元素不存在
     */
    public static int chaZhao(int[] arr,int dest){
        //开始下标

        int begin = 0;

        //结束下标

        int end = arr.length - 1;

        //实现二分法,
        while(begin <= end) {
            //中间元素下标

            int mid = (begin + end) / 2;

            if (arr[mid] == dest) {
                return mid;
            } else if (arr[mid] < dest) {
                //目标在元素右边
                //开始元素下标要重新赋值

                begin = mid + 1;
            } else {
                end = mid - 1;
            }
        }
        //当元素不存在时,返回-1

        return -1;
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值