二分查找:
package arraystolist;
/**
* 二分查找
*
* @author hanxiaofan
*
*/
public class BinarySearch {
/**
*
* @param arr
* 待查询数组
* @param k
* 查询数字
* @return
*/
public int binarySearch(int[] arr, int k) {
int a = 0;
int b = arr.length;
while (a < b) {
int m = a + (b - a) / 2; // [a,b)
if (k < arr[m]) { // 如果k小于中间数
b = m;
} else if (k > arr[m]) {
a = m + 1;
} else {
return m;
}
}
return -1;
}
public static void main(String[] args) {
BinarySearch bs = new BinarySearch();
System.out.println(bs.binarySearch(new int[] { 1, 2, 3, 4, 5 }, 4));
System.out.println(bs.binarySearch(new int[] {}, 4));
System.out.println(bs.binarySearch(new int[] { 1, 3, 5 }, 4));
}
}