栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA 二分搜索法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA 二分搜索法

思路
  在一组数组中查找一个数很多人看到这个问题后的最初想法估计都是直接从前面和后面按顺序查找,但是直接查找的复杂度是 O(N),并不是一个好的方案。我们还是要从二分查找法入手。

导入模块

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

实现输入数组

public int[] inputArray(){//输入数组
        System.out.println("请输入数组长度:");
        Scanner in=new Scanner(System.in);
        int[] array=new int[in.nextInt()];
        for (int i = 0; i < array.length; i++) {//输入数组
            System.out.println("请输入第"+(i+1)+"个数:");
            array[i]=in.nextInt();
        }
        System.out.println("您输入的数组为"+Arrays.toString(array));
        return array;
    }

查找

public void findOut(int[] array,int num){//查找
        int high = array.length-1;
        int low = 0;
        for(int count=0; countarray[middle]){
                low=middle;
            }else {
                System.out.println(num+"找到了,它是这组数组中第"+(middle+1)+"个数");
                break;}

        }
    }

完整代码

package Fan.Da.wei;


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


public class BinarySearch {
    public int[] inputArray(){//输入数组
        System.out.println("请输入数组长度:");
        Scanner in=new Scanner(System.in);
        int[] array=new int[in.nextInt()];
        for (int i = 0; i < array.length; i++) {//输入数组
            System.out.println("请输入第"+(i+1)+"个数:");
            array[i]=in.nextInt();
        }
        System.out.println("您输入的数组为"+Arrays.toString(array));
        return array;
    }

    public void findOut(int[] array,int num){//查找
        int high = array.length-1;
        int low = 0;
        for(int count=0; countarray[middle]){
                low=middle;
            }else {
                System.out.println(num+"找到了,它是这组数组中第"+(middle+1)+"个数");
                break;}

        }
    }

    public static void main(String[] args){
        BinarySearch binarySearch = new BinarySearch();
        int[] array = binarySearch.inputArray();
        System.out.println("正在排序中···");
        Arrays.sort(array);//实现数组排序
        System.out.println("排序后的数组为"+Arrays.toString(array));
        System.out.println("请输入你要查找的数:");
        Scanner scanner=new Scanner(System.in);
        int num=scanner.nextInt();
        binarySearch.findOut(array,num);
//        System.out.println("请输入数组长度:");
//        Scanner in=new Scanner(System.in);
//        int[] array=new int[in.nextInt()];
//        for (int i = 0; i < array.length; i++) {//输入数组
//            System.out.println("请输入第"+(i+1)+"个数:");
//            array[i]=in.nextInt();
//        }
//        System.out.println("您输入的数组为"+Arrays.toString(array));
//        System.out.println("正在排序中···");
//        for (int n = 0; n < array.length; n++) {//实现输入数组从小到大排序
//            for (int m = 0 ; m < array.length-n-1; m++) {
//                if(array[m]>array[m+1]){
//                    int temp = array[m];
//                    array[m]=array[m+1];
//                    array[m+1]=temp;
//                }
//            }
//        }

//        Arrays.sort(array);//排序数组
//        System.out.println("排序后的数组为"+Arrays.toString(array));
//        System.out.println("请输入你要查找的数:");
//        Scanner scanner=new Scanner(System.in);
//        int num=scanner.nextInt();
//        int high = array.length-1;
//        int low = 0;
//        for(int count=0; count
//            int middle=(low+high)/2;
//            if(array.length-1==count){
//                System.out.println("没有找到!");
//            } else if(num
//                high=middle;
//            } else if(num>array[middle]){
//                low=middle;
//            }else {
//                System.out.println(num+"找到了,它是这组数组中第"+(middle+1)+"个数");
//                break;}
//
//        }
    }
}

运行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/299120.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号