代码

public class ArrayUtil {

    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int dest = 5;
        int index = arraySearch(array, dest);
        System.out.println(index == -1 ? "元素" + dest + "不存在" : "元素" + dest + "下标为:" + index);
    }

    /**
     * 从数组中查找目标元素的下标
     * @param array 被查找的数组(该数组必须是已经排好序的)
     * @param dest 目标元素
     * @return -1代表该元素不存在,其他表示放回该元素的下标
     */
    public static int arraySearch(int[] array, int dest) {
        // 开始下标
        int begin = 0;
        // 结束下标
        int end = array.length - 1;

        while (begin <= end) {
            int mid = (begin + end) / 2;
            if (array[mid] == dest) {
                return mid;
            } else if (array[mid] < dest) {
                // 目标元素在中间元素的右边
                begin = mid + 1;
            } else if (array[mid] > dest) {
                // 目标元素在中间元素的左边
                end = mid - 1;
            }
        }
        return -1;
    }
}

结果

元素5下标为:4

分类: 算法专栏

Deng Jia

Keep Moving.

0 条评论

发表评论

电子邮件地址不会被公开。