您好,登錄后才能下訂單哦!
這篇文章主要介紹“java二分查找的原理如何實現”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“java二分查找的原理如何實現”文章能幫助大家解決問題。
1.二分查找步驟描述
(1)首先確定整個查找區間的中間位置 mid = ( left + right )/ 2
(2)用待查關鍵字值與中間位置的關鍵字值進行比較;
若相等,則查找成功
若大于,則在后(右)半個區域繼續進行折半查找
若小于,則在前(左)半個區域繼續進行折半查找
(3)對確定的縮小區域再按折半公式,重復上述步驟。
最后,得到結果:要么查找成功, 要么查找失敗。折半查找的存儲結構采用一維數組存放。 折半查找算法舉例
2.要求
(1)必須采用順序存儲結構。
(2)必須按關鍵字大小有序排列。
3.實例
public class Demo { public static void main(String[] args) { int[] arr={-1,0,3,5,9,12};//查找的數組 int searchNum=13;//查找的目標數 Arrays.sort(arr); int resultOne=binarySearchOne(arr,searchNum,0,arr.length-1); System.out.println(resultOne); int resultTwo=binarySearchTwo(arr,searchNum); System.out.println(resultTwo); } /** * 遞歸實現 * @param arr * @param searchNum * @param start * @param end * @return */ public static int binarySearchOne(int[] arr,int searchNum,int start,int end){ if(start>end) return -1; int middle=(start+end)/2; if(searchNum<arr[middle]) return binarySearchOne(arr,searchNum,start,middle-1); else if(searchNum>arr[middle]) return binarySearchOne(arr,searchNum,middle+1,end); else return middle; } /** * 非遞歸實現 * @param arr * @param searchNum * @return */ private static int binarySearchTwo(int[] arr, int searchNum) { int start=0; int end=arr.length-1; while(start<=end){ int middle=(start+end)/2; if(searchNum<arr[middle]) end=middle-1; else if(searchNum>arr[middle]) start=middle+1; else return middle; } return -1; } }
關于“java二分查找的原理如何實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。