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