提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
使用二进制搜索查找数组中的项。
/* from 时 代 J a v a 公 众 号 - nowjava.com */ import java.security.SecureRandom; import java.util.Arrays; public class Main { public static int binarySearch(int[] data, int key) { int low = 0; // low end of the search area int high = data.length - 1; // high end of the search area int middle = (low + high + 1) / 2; // middle element int location = -1; // return value; -1 if not found do { System.out.print(remainingElements(data, low, high)); for (int i = 0; i < middle; i++) System.out.print(" ");// 来自 nowjava.com - 时代Java System.out.println(" * "); // indicate current middle // if the element is found at the middle if (key == data[middle]) location = middle; // location is the current middle else if (key < data[middle]) // middle element is too high high = middle - 1; // eliminate the higher half else // middle element is too low low = middle + 1; // eliminate the lower half middle = (low + high + 1) / 2; // recalculate the middle } while ((low <= high) && (location == -1)); return location; } private static String remainingElements(int[] data, int low, int high) { StringBuilder temporary = new StringBuilder(); // append spaces for alignment for (int i = 0; i < low; i++) temporary.append(" "); // append elements left in array for (int i = low; i <= high; i++) temporary.append(data[i] + " "); return String.format("%s%n", temporary); } public static void main(String[] args) { SecureRandom generator = new SecureRandom(); int[] data = new int[15]; // create array for (int i = 0; i < data.length; i++) // populate array data[i] = 10 + generator.nextInt(90); Arrays.sort(data); // binarySearch requires sorted array System.out.printf(