class ArrayFind { public static void main(String[] args) { int[] arr = new int[]{1,6,9,11,18,54,60,66,90}; System.out.print("find 18 from array:"); printArr(arr); System.out.println("find result is(halfSearch):" + halfSearch_2(arr, 18)); System.out.println("find result is(halfSearch_2):" + halfSearch_2(arr, 18)); }//end of method main //打印一个数组 public static void printArr(int[] arr) { for (int x = 0; x<arr.length; x++ ) { if (x == arr.length - 1) { System.out.println(arr[x]); break; } System.out.print(arr[x] + ","); } }//end of method printArr //折半查找法 public static int halfSearch(int[] arr, int key) { int max = arr.length - 1; int min = 0; int mid = (max + min)/2; while (arr[mid] != key) { if (key>arr[mid]) { min = mid + 1; } else if (key<arr[mid]) { max = mid - 1; } if (min>max) { return -1; } mid = (max + min)/2; }//end of while return mid; }//end of method halfSearch //折半查找的第二种方式 public static int halfSearch_2(int[] arr, int key) { int max = arr.length - 1; int min = 0; int mid = (max + min)/2; while (min <= max) { if ( key > arr[mid] ) { min = mid + 1; } else if ( key < arr[mid] ) { max = mid - 1; } else if (key == arr[mid]) { return mid; } mid = ( max + min ) / 2; }//end of while return -1; }//end of method halfSearch }//end of class ArrayFind
评论