读书人

JAVA减半查找法

发布时间: 2013-05-02 09:39:29 作者: rapoo

JAVA折半查找法

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 whilereturn 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 whilereturn -1;}//end of method halfSearch}//end of class ArrayFind

?

读书人网 >编程

热点推荐