集册 Java实例教程 二进制搜索整数数组

二进制搜索整数数组

欢马劈雪     最近更新时间:2020-01-02 10:19:05

469
二进制搜索整数数组

/*

 * Copyright (c) 2013 Menny Even-Danan

 *

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 * http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

import java.lang.reflect.Method;

import java.util.Arrays;
// 来自 时 代 J a v a

public class Main{

    public static void main(String[] argv) throws Exception{

        int[] array = new int[]{34,35,36,37,37,37,67,68,69};

        int startIndex = 2;

        int endIndex = 2;

        int value = 2;

        System.out.println(binarySearch(array,startIndex,endIndex,value));

    }

    private static final Method METHOD_Arrays_binarySearch = CompatUtils

            .getMethod(Arrays.class, "binarySearch", int[].class,

                    int.class, int.class, int.class);

    public static int binarySearch(int[] array, int startIndex,

            int endIndex, int value) {

        if (METHOD_Arrays_binarySearch != null) {

            final Object index = CompatUtils.invoke(null, 0,

                    METHOD_Arrays_binarySearch, array, startIndex,

                    endIndex, value);/*时 代      J a v a   公   众 号 - nowjava.com 提 供*/

            return (Integer) index;

        } else {

            return compatBinarySearch(array, startIndex, endIndex, value);

        }

    }

    static int compatBinarySearch(int[] array, int startIndex,

            int endIndex, int value) {

        if (startIndex > endIndex)

            throw new IllegalArgumentException();

        if (startIndex < 0 || endIndex > array.length)

            throw new ArrayIndexOutOfBoundsException();
展开阅读全文