随手写了个二分查找法
public class DiSearch {
/**
* 二分查找法
* @param arr 目标数组
* @param x 待查找数字
* @return -1未查找到,-2输入的数组错误,大于等于0则为找到的位置
*/
public int search(int[] arr, int x) {
for(int i = 0 ; i < arr.length - 1 ; i++) {
if(arr[i+1] <= arr[i]) return -2;
}
int start = 0;
int end = arr.length - 1;
int mid = 0;
while(start <= end) {
mid = (start + end) / 2;
if(arr[mid] > x) {
end = mid - 1;
}else {
if(arr[mid] < x) {
start = mid + 1;
}else {
return mid;
}
}
}
return -1;
}
public void test() {
int[] arr = {1,3,4,6,7,9,14,17,23,46,55,67,68,99};
System.out.println(search(arr,54));
}
}