Java手写二分查找
两个注意点:
- 有序的数组才能进行二分查找,需要先排序下。
- mid的下标计算是slow+(fast-slow)/2,(fast-slow)/2仅表示距离,考虑实际索引还要加上slow。
public static void main(String[] args) {int[] ints = new int[]{1,4,2,6,8,3};int target = 4;Arrays.sort(ints);int i = binarySearch(ints, target);System.out.println(i);
}public static int binarySearch(int[] ints, int target){int slow = 0;int fast = ints.length - 1;while (slow <= fast){int mid = slow + (fast - slow)/2;//注意下标计算if (ints[mid] > target){fast = mid - 1;}else if (ints[mid] < target){slow = mid + 1;}else {return mid;}}return -1;
}
以上为个人学习分享,如有问题,欢迎指出:)