二分查找
package codingTest3;
public class binarySearch {
public static int binarySearch(int[] arr, int key) {
int start = 0;
int end = arr.length;
int mid = start + (end - start) / 2;
while(start <= end) {
if(key == arr[mid]) {
return key;
}else if(key > arr[mid]) {
start = mid +1;
}else {
end = mid -1;
}
mid = start + (end - start)/2;
}
return -1;
}
public static void main(String[] args) {
int[] arr = {1, 2, 5, 10, 79, 100, 102};
System.out.println(binarySearch(arr, 100));
int[] arr2 = {1, 2, 5, 11, 79, 100, 102};
System.out.println(binarySearch(arr2, 10));
}
}
判断平方根
package codingTest3;
/**
* 二分法
*
*
* @author lenovo
*
*/
public class squareRoot {
public static int squareRoot(int x) {
if(x <= 1) {
return x;
}
int begin = 1;
int end = x;
int middle = 0;
while(begin <= end){
middle = begin + (end - begin)/2;
if(middle == x/middle) {
return middle;
}else {
if(middle < x/middle) {
begin = middle + 1;
}else {
end = middle -1;
}
}
}
return end;
}
public static void main(String[] args) {
System.out.println(squareRoot(10));
}
}