【java】二分查找法与Arrays工具类

本文介绍了如何使用Java实现二分查找算法,包括基础语法实现和Arrays工具类的应用。通过示例代码展示了如何对排序数组进行查找操作,并提供了输入目标元素后返回其在数组中的下标。此外,还简要提到了Arrays工具类中的一些常用方法。
摘要由CSDN通过智能技术生成

二分查找法:

import java.util.Scanner;
/**
 * 二分法查找:
 *      1、二分法查找建立在"排序"的基础上。
 *      2、原理:
 *          10(下标0) 23 56 89 100 111 222 235 500 600(下标9)   arr数组
 *          目标:找出600的下标
 *              开始下标为0
 *              (0+9) / 2 == 4(中间元素下标)      自动取整
 *           arr[4] = 100 这个元素是中间元素
 *           100 < 600 中间元素比查找元素小说明被查找的元素在中间元素的右边(若比查找元素大,则需中间元素-1再加上开始下标除2)
 *           那么接下来开始的下标变为4+1
 *              (5+9) / 2 = 7(中间元素下标)
 *              arr[7] = 235
 *              .....
 *              .....       重复以上步骤找出600
 */
//基础语法实现代码
public class ArrayUtil {
    public static void main(String[] args) {
        int[] arr = {10,23,56,89,100,111,222,235,500,600};
        System.out.print("请输入查找目标:");
        int shuru = new Scanner(System.in).nextInt();
        int mi = search(arr,shuru);
        System.out.println(mi == -1?"该元素不存在":"元素下标为:"+mi);


    }
    public static int search(int[] arra, int dest){  //dest为目标元素
        int begin = 0; //开始下标
        int end = arra.length-1; //结束下标
        int mid = (begin + end) / 2; //中间元素
        while(begin <= end){
            if(arra[mid] == dest){
                return mid;
            }else if(begin < dest){
                begin = mid + 1;
            }else{
                end = mid -1;
            }
        }
        return -1; //这里-1可自由定义,主要用于输出结果的判断
    }
}

Arrays工具类:

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

/**
 * Arrays工具类:
 *      idea中双击shift在弹出窗口classes中输入Arrays即可进入Arrays工具类API帮助文档中查看包含方法。
 *      Arrays工具类部分方法如下
 */
public class ArraysTest {
    public static void main(String[] args) {
        int[] arr = {1,4,22,11,2,6,3,10};
        //排序
        Arrays.sort(arr); //可直接调用Arrays.sort();进行排序
        //遍历输出
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        //二分法查找
        System.out.println("输入查找元素:");
        int input = new Scanner(System.in).nextInt();
        int index = Arrays.binarySearch(arr,input); //可直接调用Arrays.binarySearch();进行查找
        System.out.println(index == -1?"该元素不存在":"该元素下标为:" +index );

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值