二分法查找

二分法查找是一种高效的数据搜索方法,适用于有序数组。它通过将数据集有序排列并不断分半,与分界点元素比较来快速定位目标元素。查找过程中,如果目标元素不在边界上,就排除相应的一半数据,直到找到目标或确定其不存在。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二分法


什么是二分法查找

简单粗暴一点理解二分法

(1)将数据有序排列:先将一个数据集进行有序排列;

(2)数据分半: 就是将排序好的数据集切分成大致相等的两份数据集;

(3)查找数据: 查找的时候直接和拆分数据集中的第一个或最后一个元素进行大小比较,不满足则表示数据不存在于该数据集中,满足则说明要查找的元素存在于当前数据集中.

import java.util.Scanner;

// dichotomy  二分法
public class Dichotomy {
    public static int dichotomy (int[] arr) {
        int start = 0;        //初始位置的索引
        int end = arr.length - 1;       //结束位置的索引
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入数组中要查找的数:");
        int num = sc.nextInt();
        while (start < end) {
            int mid = (start + end) / 2;

            if (arr[mid] == num) {
                System.out.println("查找的数字的位置在第" + (mid + 1) + "位");
                return -1;
            } else if (arr[mid] < num) {
                start = mid - 1;
            } else if (arr[mid] > num) {
                end = mid + 1;
            }
        }
        while (true) {    //当标识为true时,标识未在数组中找到该数
            System.out.println("该查找数字不在数组中!");
        }
    }

    public static void main(String[] args) {
        int[] arr = {2, 12, 32, 42, 52, 62, 72, 82, 92};
        dichotomy(arr);
    }
}

【注意】前提是有序数组才能二分法查找,如果是无需数组,请先对数据进行排序后再进行二分法查找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值