二分法查找是非常经典的定位查找算法,下面写一个记录之:
题目:有一个从小到大的有序数组如{1,2,3,3,5,9,10},有一个数为5,查找这个数在此数组中最邻近的下标。
思路:可以采用二分法来解此题。
/** * 查找区间 first闭区间 last 开区间 如[0,6) * * @param array 查找数组 * @param first 查找开始下标闭区间 * @param last 查找结束下标开区间 * @param source 需要查找的目标值 * @return */ static int searchIndexFromArray(int[] array, int first, int last, int source) { while (first < last) { int middle = first + (last - first) / 2; if (array[middle] < source) { first = middle + 1; } else { last = middle; } } return first; }