java算法之二分查找法

二分法保证传入的数组是有序的

package 递归;

import java.lang.reflect.Array;

public class 二分法 {
    
    


    public static void main(String[] args) {
    
    

        int[] arr = {
    
    1,2,3,4,5,6};

        int p = binarySearch(arr, 0, arr.length, 5);

        System.out.println(p);

    }


    /*
        int [] arr 整数数组
        low 小的 0
        high 大的 len
        key 值
     */
    private static int binarySearch(int[] arr, int low, int high, int key) {
    
    
        if (low > high) {
    
    
            return -1;
        }
        //找到一个中值
        int mid = low + ((high - low) >> 1);
        int midValue = arr[mid];

        if (midValue < key) {
    
    
            return binarySearch(arr, mid, high, key);
        } else if (midValue > key) {
    
    
            return binarySearch(arr, low, mid, key);
        } else {
    
    
            return mid;
        }

    }

}

猜你喜欢

转载自blog.csdn.net/qq_42794826/article/details/108990161