/** * java實現二分查找法 */ public static void main(String[] args) { // TODO Auto-generated method stub // int arr[]={1,2,3,4,5,6,7,8,9,10}; int len =80000; int arr[] = new int [len]; for(int i = 0;i<arr.length;i++){ if(i==1){ arr[i]=88; }else{ arr[i]=(int)(Math.random()*10000); } } int searchValue=2; Binary b = new Binary(); b.sort(arr); System.out.println("開始查找"+new Date()); b.binarySearch(0,arr.length-1,arr,searchValue); System.out.println("結束查找"+new Date()); } public void binarySearch(int left,int right,int arr[],int searchValue){ int middleIndex = (left+right)/2; int middleValue = arr[middleIndex]; if(right>=left){ if(searchValue>middleValue){ binarySearch(middleIndex+1, right, arr, searchValue); }else if(searchValue<middleValue){ binarySearch(left, middleIndex-1, arr, searchValue); }else{ System.out.println("找到了,下標爲"+middleIndex); return; } }else{ System.out.println("找不到"); return; } } public void sort(int arr[]){ int insert; int index; for (int i = 1; i < arr.length; i++) { insert = arr[i]; index = i; while(index > 0 && arr[index-1]>arr[index]){ int temp; temp = arr[index-1]; arr[index-1]=arr[index]; arr[index] = temp; index--; } } }