/** * 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始), * 若不存在该元素,返回-1。 * 若该元素出现多次,请返回第一次出现的位置。 * <p> * 稍微复杂的思路:将最小指针min与最大指针max都逼向最左边的元素,也就是第一次出现。 */ privateintgetPos(int[] A, int n, int val) { intmin=0, max = n - 1, middle;
while (min < max) { middle = min + (max - min) / 2; // 防止(min + max)溢出 if (A[middle] == val) max = middle; elseif (A[middle] > val) max = middle - 1; elseif (A[middle] < val) min = middle + 1; }