17-二分查找

*

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class BinarySearch {
/*
    二分查找原理:
        顾名思义,就是在一个数组中查找一个特定的值
        二分查找可以在每次查找后,减少一半的查找量

        但是二分查找有个前提就是数组必须是先排序好的。
 */

    public static void main(String[] args) {
        // 随机生成(1-100)的指定长度的数组
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入指定的数组长度:");
        int[] arr = randomArr(scanner.nextInt());
        System.out.println("源数组: arr = " + Arrays.toString(arr));

        System.out.print("请输入要查找的元素:");
        int key = scanner.nextInt();
        int index = binarySearch(arr, key);
        if (index != -1) {
            System.out.println(key + "值在数组中的索引为:" + index);
        }
        else {
            System.out.println("数组中不存在" + key + "元素!");
        }
    }

    private static int binarySearch(int[] arr, int key) {
        // 定义小索引min,和大索引max
        int min = 0;
        int max = arr.length - 1;
        // 循环查找
        while (min  arr[middle]) {
                min = middle + 1;
            }else {
                return middle;
            }
        }
        return -1;
    }

    private static int[] randomArr(int length) {
        Random random = new Random();
        System.out.print("请输入数组的长度:");
        int[] arr = new int[length];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = random.nextInt(101) + 1;
        }
        Arrays.sort(arr);
        return arr;
    }
}

Original: https://www.cnblogs.com/OnlyOnYourself-lzw/p/16567734.html
Author: OnlyOnYourself-Lzw
Title: 17-二分查找

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581575/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球