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;
}
}
}
认识不足,才可发展……
如果转载,注明出处。