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法式設計有所贊助。