java之二分查找法

 
 /**
  * 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--;
   
  }
  }
  
 }
相關文章
相關標籤/搜索