java算法-二分查找

二分查找

二分查找又稱折半查找
適用於順序存儲結構按有序排列

算法原理

將數組中間位置元素和目標元素進行比較,如果相同,則查找成功
如果不相等,那麼查找的元素一定前半部分或後半部分
如果目標元素大於中間元素,則查找後半部分,否則查找前半部分
重複上面的過程,直到找到滿足要求的元素,查找成功
如果還沒有找到,則此元素不在數組裏面

有一個數組:2,6,10,14,18,22,26
使用二分查找算法找出6在數組中的位置

二分查找

代碼實現

public static void main(String args[]) {
        int arr[] = {2, 6, 10, 14, 18, 22, 26};
        //查找指定元素的位置
        int index = binarySearch(arr, 6);
        System.out.println("查找元素位置爲:" + index);
    }
    
    private static int binarySearch(int[] arr, int target) {
        //第一個index
        int min = 0;
        //最後一個index
        int max = arr.length - 1;
        int mid = (min + max) >> 1;
        
        //循環查找指定值的index
        while (arr[mid] != target) {
            //在左邊
            if (arr[mid] > target) {
                //更新最大值
                max = mid - 1;
            } else {
                //在右邊,更新最小值
                min = mid + 1;
            }
            //更新中間值
            mid = (min + max) / 2;
            if (min > max){
                mid = -1;
                break;
            }
        }
        return mid;
    }

到此結束了,希望對有需要的小夥伴有所幫助。

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