public class Search {
public int binarySearch(int[] arr, int num) {
times = 0;
int middle, start = 0, end = arr.length - 1,middVal;
if (end == 0)
return arr[0] == num ? 0 : -1;
while (start <= end) {
times++;
middle = (start + end) >>> 1;
middVal = arr[middle];
if (num > middVal)
start = middle + 1;
else if (num < middVal)
end = middle - 1;
else
return middle;
}
return -1;
}
public static void main(String[] args) {
int[] arr = { 3,4,8,9,0,1,99,88,-8,-9,10,85,66,332};
java.util.Arrays.sort(arr); //先排序
Search search = new Search();
int index = search.binarySearch(arr, 85);
System.out.println((new StringBuilder()).append("index: ").append(index).append("\t times: ").append(search.times).toString());
}
private int times = 0;
}
评论0