二分查找
算法思想:又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。
代码实现:
/**
* 二分法查找
* @author liujunwei1016
*
*/
public class TestBinarySearch {
public static void main(String[] args) {
int[] arr = {7, 15, 78, 5, 99, 52,24,19,33,46};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
System.out.println(myBinarySearch(arr, 36));
}
public static int myBinarySearch(int[] arr, int value) {
int low =0;
int high = arr.length-1;
while(low<=high) {
int mid = (low+high)/2;
if(value == arr[mid]) {
return mid;
}
if(value > arr[mid]) {
low = mid +1;
}
if(value < arr[mid]) {
high = mid -1;
}
}
return -1;
}
}