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

【java】二分查找法与Arrays工具类,第1张

二分查找法:

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在d出窗口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 );

    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/874329.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存