package suanfa;
public class ErFen {
public static void main(String[] args) {
int[] arr = {1,2,3,5,7,23,54,64,78};
System.out.println("index="+binarySearch(arr,54));
}
public static int binarySearch(int[] arr,int target) {
int left = 0;
int right = arr.length -1;
while(left <= right) {
int mid = left +((right - left)>>1);//(right - left>>1);这样也可以。
if(arr[mid] == target) {
return mid;
}else if(arr[mid] > target ) {
right = mid - 1;
}else {
left = mid + 1;
}
}
return -1;
}
}
简单二分,数组是升序或降序,降序的话需要将条件调换,该代码缺点是不能查找重复元素。