幾種查找算法Java實現
2
/** * 類名:SearchTest.java * 說明: 幾種查找方法 */ public class SearchTest { /** * 函數名稱:binarySearch * 說明:二分查找 時間復雜度O(logN) */ //驅動例程 public static <AnyType extends Comparable<? super AnyType>> int binary(AnyType[] a,AnyType x){ return binary(a,0,a.length-1,x); } //遞歸 /* public static <AnyType extends Comparable<? super AnyType>> int binary(AnyType[] a,int low,int high,AnyType x){ if(low > high) return -1; int mid = (low + high)/2; if(a[mid].compareTo(x) > 0 ) return binary(a,low,mid - 1,x); else if(a[mid].compareTo(x) < 0 ) return binary(a,mid+1,high,x); else return mid; }*/ //非遞歸 public static <AnyType extends Comparable<? super AnyType>> int binary(AnyType[] a,int low,int high,AnyType x){ while(low <= high){ int mid = (low + high)/2; if(a[mid].compareTo(x) > 0) high = mid -1; else if(a[mid].compareTo(x) < 0) low = mid + 1; else return mid; } return -1; } /** * 函數名稱:main * 說明:測試 */ public static void main(String[] args) { // TODO 自動生成的方法存根 Integer[] a = new Integer[]{1,2,3,4,5,6}; int x = 3; System.out.println(binary(a,x)); } }