美文网首页
二分查找

二分查找

作者: 站着得花猫 | 来源:发表于2019-08-11 11:42 被阅读0次

输入的数组前提是有序数组

面试得知下标索引容易越界,写出来可以,写对却不容易

public class binarySearch {

public static void main(String[] args) {

int[] arr = {1, 3, 5, 6, 7, 8, 10, 11, 12};

        // System.out.println(binarySearchtest(arr, 0, arr.length - 1, 77));

        System.out.println(binarySearch(arr, 6));

    }

//给定的数组前提是有序数组

    static int binarySearchtest(int a[], int left, int right, int value) {

int middle = (left + right) /2;

        int midVal = a[middle];

        if (value < a[left] || value > a[right] || left > right) {

return -1;

        }

if (midVal < value) {

return binarySearchtest(a, middle+1, right, value);

        }else if (midVal > value) {

return binarySearchtest(a, left, middle-1, value);

        }else {

return middle;

        }

}

static int binarySearch(int a[], int value) {

int min =0;

        int max = a.length -1;

        while (min <= max) {

int mid = (min + max) /2;

            int midVal = a[mid];

            if (value == midVal) {

return mid;

            }else if (value > midVal) {

min = mid +1;

            }else {

max = mid -1;

            }

}

return -1;

    }

}

原网站

相关文章

网友评论

      本文标题:二分查找

      本文链接:https://www.haomeiwen.com/subject/zpijjctx.html