二分查找

二分查找

【举个例子】,你去图书馆找一本书,如果你知道这个书架上的书是按照编号有序排列,你会从头开始一个一个找吗?

你大概的思路是这样的,先去中间看看,如果我找的书的编号比中间的大我就去左边找,否则去右边找。

这种思路就是我们的二分查找法:

(1)二分查找(折半查找)

image

import java.util.Scanner;

public class BinarySearch {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] nums = {14,24,28,37,54,67,79,85,96,157,257,368};
        System.out.println("请输入您要查找的数字:");
        int target = scanner.nextInt();
        //需要左右两个变量确定检索范围
        int left = 0;
        int right = nums.length -1;

        if (target < nums[0] || target > nums[nums.length-1]){
            System.out.println("您输入的数字不存在!");
        }
        int b = -1;
        while (left <= right){//左右下标不重合就继续
            int middle = (left+right)/2;
            if (nums[middle] == target){
                b = middle;
                break;
            }else if (nums[middle] > target){
                right = middle-1;
            }else {
                left = middle+1;
            }
        }

        System.out.println(b);

    }
}
posted @ 2022-05-07 17:59  追风的羊  阅读(60)  评论(0)    收藏  举报