1、二分法查询
public static void main(String[] args) { int[] array = new int[]{1, 4, 3, 2, 6, 5, 8, 9, 7}; int target = 9; boolean flag = findTarget(target, array); System.out.println(flag); } public static boolean findTarget(int target, int[] array) { if (null == array || array.length == 0) { return false; } Arrays.sort(array); //排序从小到大 int start = 0; int end = array.length; int mid = (start + end) / 2; while (true) { System.out.println(String.format("start:%s,end:%s,mid:%s", start, end, mid)); if (start > end || mid >= array.length) { return false; } if (array[mid] == target) { return true; } else if (array[mid] < target) { start = mid + 1; mid = (start + end) / 2; } else if (array[mid] > target) { end = mid - 1; mid = (start + end) / 2; } } }
认识不足,才可发展……
如果转载,注明出处。