JAVA实现之二分查找

JAVA实现之二分查找

二分查找又称折半查找,大多使用与有序的顺序表;

算法思想

首先将其给定的value值与中间位置的元素进行比较,若相等则查找成功,返回该元素的查找位置;若不等,所需查找的元素一定在除中间元素value值以外的前半部分或者后半部分,则根据给定元素值与mid所指元素值(array[mid])进行比较,value>array[mid]时查找后半部分;反之查找前半部分。

代码实现

public class BinarySearch extends Object {
    /*
    *@Description: 二分查找的实现--一般应用于有序表,且多用于查找元素时,对插入和删除元素方面稍逊!
    *@Author WANG##
    *@Date: 2021/3/18 23:52
    */
    public static void main(String[] args) {
        int[] array = new int[]{11, 22, 33, 44, 45, 46, 47, 51, 53};
//        int i=binarySearch(array,11);
//        System.out.println(array[i]);//取出该数
//        System.out.println(i);//输出该数所在位置
        Thread thread1 = new Thread(new Runnable() {
            @Override
            public void run() {
                Scanner scanner = new Scanner(System.in);
                int i=scanner.nextInt();
                System.out.println(System.currentTimeMillis()+"号冒险家您好,请输入您所需元素:"+i);
                binarySearch(array,i);
            }
        });
        thread1.start();
    }

    private static int binarySearch(int [] array,int values) {
        int low=0;
        int high=array.length-1;
        //使用while循环
/*        while (low<=high){
            mid=(low+high)/2;
            if (array[mid]==values){
                System.out.println("==========================================");
                System.out.println(System.currentTimeMillis()+"号冒险家!恭喜您成功获取元素:"+values);

            }else if (array[mid]<values) {
                high=mid-1;
            }else {
                low=mid+1;
            }*/
        while (low<=high){
            int mid=(low+high)/2;
            if (array[mid]>values){
                high=mid-1;
            }else if (array[mid]<values){
                low=mid+1;
            }else {
                System.out.println("==========================================");
                System.out.println(System.currentTimeMillis()+"号冒险家!恭喜您成功获取元素:"+values);
                return mid;
            }
        }
        System.out.println(System.currentTimeMillis() + "号冒险家您好,此处无您需要的东西...欢迎下次光临!");
        return -1;
    }
}

运行结果

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值