JAVA二分查找法(Binary Search)

一、算法要求

  1.必须采用顺序存储结构。
  2.必须按关键字大小有序排列。

二、算法介绍

  二分查找法需要在已经排序好的数列中才能查询匹配的元素,先于设立个最小值和最大值然后和中间的元素比较若是大于它则从该元素之后查找匹配的元素,若是小于它则 从中间的元素之前查找,如此往返

三、代码演示

int[] arr = {1,3,5,7,8,15,22,33,44,55,66};
        Scanner sc=new Scanner(System.in);//用户键盘录入要查找的数字

        System.out.println("请输入要查找的数字");
        int findNum=sc.nextInt();
        
        int low=0;//设定最小值
        int height=arr.length-1;//设定最大值
        int mid=0;//求取中间值的索引
        boolean isFind=false;//标志位代表是否找到
        while(height>=low) {//由于不知道循环多少次所以用while循环,并且最大值总是大于等于最小值若是小于则重复查找或者是越界了
            mid=(low+height)/2;
            if(findNum>arr[mid]) {
                low=mid+1;//当大于中间值时最小值索引改变为中间值+1
            }
            
            else if(findNum<arr[mid]){
                height=mid-1;//当大小于中间值时改变为最大值索引为中间值-1
            }
            
            else if(findNum==arr[mid]) {//当满足条件时跳出循环,并且将标志位赋值为true
                isFind=true;
                break;
            }
            
            
        }
        
        if(isFind==true) {
            System.out.println("恭喜找到了索引为"+mid);
            }else {
                System.out.println("您所输入的数字无法找到");
            }

猜你喜欢

转载自www.cnblogs.com/lzq-java/p/9297604.html
今日推荐