二分法查找最基本的要求是数据序列必须升序。定位中间位置并获取到位于该位置的元素值,通过比较中间值与被查找值的大小来重新定义查找范围(beigin~mid 或 mid+1~end)。不断重复之前的操作。直到查到或范围缩小到0。
package yao.sort;
import org.junit.Test;
public class HalfFind {
public static void halfFind(int[] arr, int value) {
int beg = 0, end = arr.length, mid = arr.length/2;
while (mid != end && arr[mid] != value) {
if (arr[mid] > value) {
end = mid;
} else {
beg = mid+1;
}
mid = beg + (end-beg)/2;
}
if (end == beg)
System.out.println("no found : " + value);
else
System.out.println("found v: " + arr[mid]);
}
@Test
public void test() {
int arr[] = {17, 23, 34, 53, 66, 78, 99};
halfFind(arr, 99);
halfFind(arr, 39);
}
}