Java算法之二分法

二分法

前提:必須按照升序排列好。

含義:給出有序的數組之後,先找到數組中間下標,然後獲取中間值。以中間值爲中心,分爲兩部分:左邊數據和右邊數據。用戶給的值先判斷值是否等於中間值,等於則返回此下標。不等於,判斷此值是大於中間還是小於中間值,如果大於中間值往右邊找,反之往左邊找。

Java代碼:

/**
 * <br>
 * <b>類說明: </b> 二分法查找數組下標
 * <b>作者:   </b> Guo.shiLin
 * <b>日期:   </b> 2018\7\23 0023
 *
 * @version 1.0
 */
public class ArraysTest {
    public static void main(String[] args) {
        int[] param = {12, 3, 34, 23};
        Arrays.sort(param);
        int value = 3;
        int low = 0;
        int middle;
        int cow = param.length;
        while (true) {
            middle = (low + cow) / 2;
            if (param[middle] == value) {
                System.out.println("與值對應的下標爲:" + middle);
                return;
            } else if (low > cow) {
                System.out.println("超出範圍");
                return;
            } else {
                if (param[middle] > value) {
                    cow = middle - 1;
                } else {
                    low = middle + 1;
                }
            }
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章