二分查找

闲来无趣,云品台也开发的差不多了,回顾回顾小小算法,防止老年痴呆
/**
 * 又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,
 * 如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,
 * 则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。
 */
public class BinarySerach {
    @Test
    public void binarySearchTest() {
        Integer[] arr = {1, 2, 3, 5, 6, 7, 8, 9};
        int dest = 3;
        int i = binarySearchTest(arr, 0, arr.length - 1, dest);
        System.out.println(i);
    }

    private int binarySearchTest(Integer[] arr, int left, int right, int dest) {
        if (left <= right) {
            int middle = (left + right) >> 1;
            if (arr[middle] == dest) {
                return middle;
            } else if (arr[middle] < dest) {
                left = middle;
                return binarySearchTest(arr, left, right, dest);
            } else {
                right = middle;
                return binarySearchTest(arr, left, right, dest);
            }
        }
        return -1;
    }
}

你可能感兴趣的:(算法)