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;
    }

到此结束了,希望对有需要的小伙伴有所帮助。

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