开通博客记录自己的学习过程是每个程序员都应该做的事情。之前因为太懒,一直没开始这个must do的事情。。。今天开始第一篇博文,本人算法实在不行,之前根本没学过,就从最简单的二分查找开始吧。
public class BinarySearch {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5};
BinarySearch bs = new BinarySearch();
System.out.println(bs.binarySearch(array, 5));
}
public int binarySearch(int[] array, int target) {
int left = 0;
int right = array.length - 1;
while(left <= right) {
int middle = (right + left) / 2;
if(array[middle] == target) {
return middle;
} else if(array[middle] > target) {
right = middle - 1;
} else {
left = middle + 1;
}
}
return -1;
}
}
在这里有一点需要注意,如果left+right大于int的上限的话,就会溢出。所以最好改为middle = left / 2 + right / 2;