Java 中的二分查找

代码:

import java.util.Arrays;

public class Main{
    public static void main(String[] args){
        int[] num = {9, 8, 7, 6, 5, 10, 4, 3, 15, 2, 1};
        // 二分查找前得数组必须先排好序
        Arrays.sort(num);
        System.out.println("排序后得数组:" + Arrays.toString(num));
        System.out.println("要找的数在数组中的位置:" + myBinarySearch(num, 9));
        
    }
    public static int myBinarySearch(int[] num, int n){
        int low = 0;
        int high = num.length - 1;
        // 当 low == high 时,则查找完了
        while(low <= high){
            int mid = (low + high) / 2;
            // 如果 n > mid 的话,则舍弃 mid 左边的数字
            if(n > num[mid]){
                low = mid + 1;
            }
            else if(n < num[mid]){
                high = mid - 1;
            }
            else if(n == num[mid]){
                return mid;
            }
        }
        // 如果没有查找到则返回 -1
        return -1;
    }
}
/*
 * 输出结果:
 *  排序后得数组:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15]
*   要找的数在数组中的位置:8
 */
最后修改:2019 年 04 月 28 日 11 : 24 PM

发表评论