二分查找体现了分治的思想
方法一递归的方式
public static int binarySearch(int[] datas,int begin,int end,int data) {
int i = begin;
int j = end;
int middle = -1;
if(i>j) {
return -1;
} else {
middle = (i+j)/2;
if(data < datas[middle]) {
j = middle -1;
binarySearch(datas, i, j, data);
}else if(data > datas[middle]){
i = middle + 1;
binarySearch(datas, i, j, data);
}else {
return middle;
}
}
return -1;
}
方法二普通的方式
public static int binarySearch2(int[] datas,int begin,int end,int data) {
int i = begin;
int j = end;
int middle = -1;
while(i<j) {
middle = (i+j)/2;
if(datas[middle] == data) {
return middle;
}else if(datas[middle] > data) {
j = middle-1;
}else {
i = middle+1;
}
}
return -1;
}