Java-二分查找(折半查找)2020年

4 篇文章 0 订阅


一、二分查找概述

查找指定元素在数组中的位置时,以前的方式是通过遍历,逐个获取每个元素,看是否是要查找的元素,这种方式当数组元素较多时,查找的效率很低。
二分查找也叫折半查找,每次可以去掉一半的查找范围,从而提高查找的效率。

二、二分查找案例

  • 需求
    在数组{1,2,3,4,5,6,7,8,9,10}中,查找某个元素的位置
  • 实现步骤
    ①定义两个变量,表示要查找的范围
    ②循环查找,但是min <= max
    ③计算出mid的值
    ④判断mid位置的元素是否为要查找的元素,如果是直接返回对应索引
    ⑤如果要查找的值在mid的左半边,那么min值不变,max = mid - 1,继续下次循环查找
    ⑥如果要查找的值在mid的右半边,那么max值不变,min = mid + 1,继续下次循环查找
    ⑦当min > max时,表示要查找的数组在数组中不存在,返回-1
  • 代码实现:
import java.util.Scanner;

public class demo {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6,7,8,9,10};
        Scanner sc = new Scanner(System.in);
        System.out.println("输入要查找的值:");
        int nextInt = sc.nextInt();
        int index = binarySearchOfIndex(arr, nextInt);
        if (index == -1) {
            System.out.println("数组中无此值");
        }
        System.out.println("索引位置在:" + index);
    }
    public static int binarySearchOfIndex(int[] arr, int scannerInt) {
        int max = arr.length - 1, min = 0;
        while (min <= max) {
            int mid = (max + min) >> 1;
            if (scannerInt > arr[mid]) {
                min = mid + 1;
            } else if (scannerInt < arr[mid]) {
                max = mid - 1;
            } else {
                return mid;
            }
        }
        return -1;
    }
}

输入要查找的值:
10
索引位置在:9

三、二分查找注意事项

数组内的元素一定是有序的,如果没有顺序,是不能使用二分查找的


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮华′

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值