本帖最后由 林鹏 于 2014-7-6 20:30 编辑
大家看看这个折半查找哪里有问题,当查找3时可以正确返回数组下标0,但是输入其它值时一直返回-1
- public class HalfSelect {
- public static void main(String[] args) {
- int[] arr={3,6,9,4,7,1,8};
- int index=bisearch(arr, 6);
- System.out.println("下标为:"+index);
- }
- /**
- * 折半查找
- * @param arr
- * @param key
- * @return
- */
- public static int bisearch(int[] arr, int key) {
- int min = 0;
- int max = arr.length-1;
- int mid = (min + max) / 2;
- while (arr[mid]!=key) {
- if (key > arr[mid]) {
- min = mid + 1;
- }
- if (key < arr[mid]) {
- max = mid - 1;
- }
- if(min>max)
- return -1;
- mid = (min + max) / 2;
- }
- return mid;
- }
- }
复制代码 |
|