程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java完成二分查找算法實例剖析

Java完成二分查找算法實例剖析

編輯:關於JAVA

Java完成二分查找算法實例剖析。本站提示廣大學習愛好者:(Java完成二分查找算法實例剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是Java完成二分查找算法實例剖析正文


本文實例講述了Java完成二分查找算法。分享給年夜家供年夜家參考。詳細以下:

1. 條件:二分查找的條件是須要查找的數組必需是已排序的,我們這裡的完成默許為升序

2. 道理:將數組分為三部門,順次是中值(所謂的中值就是數組中央地位的誰人值)前,中值,中值後;將要查找的值和數組的中值停止比擬,若小於中值則在中值後面找,若年夜於中值則在中值前面找,等於中值時直接前往。然後順次是一個遞歸進程,將前半部門或許後半部門持續分化為三部門。能夠描寫得不是很清晰,若是不睬解可以去網上找。從描寫上便可以看出這個算法合適用遞歸來完成,可以用遞歸的都可以用輪回來完成。所以我們的完成分為遞歸和輪回兩種,可以依據代碼來懂得算法

完成代碼:

public class BinarySearch {
 public static void main(String[] args){
 int searchArr[] = new int[1000000];
 for(int i=0;i<1000000;i++){
  searchArr[i]=i;
 }
   System.out.println(binSearch(searchArr,0,searchArr.length-1,99));
    System.out.println(binSearch(searchArr,99));
  }
//遞歸二分查找
  public static int binSearch(int arr[], int start,int end,int sear){
    int mid = (end-start)/2 + start;
    if(sear==arr[mid]){
      return mid;
    }
    if(start>=end){
      return -1;
    }else if(sear < arr[mid]){
      return binSearch(arr,0,mid-1,sear);
    }else if(sear >arr[mid]){
      return binSearch(arr,mid+1,end,sear);
    }
    return -1;
  }
//輪回二分查找
  public static int binSearch(int arr[],int key){
    int mid = arr.length/2;
    int start = 0;
    int end = arr.length-1;
    while(start<=end){
      mid = (end-start)/2+start;
      if(key ==arr[mid]){
        return mid;
      }else if(key <= arr[mid]){
        end = mid-1;
      }else if(key >=arr[mid]){
        start = mid+1;
      }
    }
    return -1;
  }

效力比擬:

輪回二分查找算法的效力高於遞歸二分查找算法

願望本文所述對年夜家的java法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved