1. 程式人生 > >二分查詢法演算法【親測】

二分查詢法演算法【親測】

 

  • 在一個有序陣列中找到一個數的索引

程式碼如下:

public class MyArrayTest {
    public static void main(String[] args) {
        int[] arr=new int[]{1,2,3,4,5};
        int f=MyArrayTest.binarySearch(4,arr);
        if (f!=-2)
        System.out.println(f);
        else
        System.out.println("不存在");
    }
    public static int binarySearch(int value,int arr[]) {
        int min=0 ;
        int mid ;
        int max = arr.length;
        while (true) {
            mid = (min + max) / 2;
            if (mid == arr.length) {
                return -2;//這的作用是:陣列中沒找到value返回-2
            } else if (arr[mid] == value) {
                    return mid;
                }
            else if (min > max) {
                return -1;
            } else {
                if (arr[mid] > value) {
                    max = mid - 1;
                } else {
                    min = mid + 1;
                }
            }
        }
    }

}