您好,登錄后才能下訂單哦!
這篇文章主要為大家詳細介紹了java二分法查找的實現方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
java二分法查找怎么實現
BinarySearch
二分法查找,顧名思義就是要將數據每次都分成兩份然后再去找到你想要的數據,
我們可以這樣去想,二分法查找很類似與我們平時玩的猜價格游戲,當你報出一個價格時裁判會告訴你價格相對于真實值的高低,倘若是低了那我們一定會再說出一個略高的價格,反之亦然。
()
在二分法查找時要求傳入的數據必須已經有序,假設現在為升序,然后每次將所尋找的值與中間值(數組左邊界+(右邊界-左邊界)/2)作比較,大了則去尋找中間值左側數據,小則尋找中間值右側數據。
public class BinarySearch { //進行二分法查找的前提是數組已經有序! public static int rank(int key,int nums[]) { //查找范圍的上下界 int low=0; int high=nums.length-1; //未查找到的返回值 int notFind=-1; while(low<=high) { //二分中點=數組左邊界+(右邊界-左邊界)/2 //整數類型默認取下整 int mid=low+(high-low)/2; //中間值是如果大于key if(nums[mid]>key) { //證明key在[low,mid-1]這個區間 //因為num[mid]已經判斷過了所以下界要減一 high=mid-1; }else if(nums[mid]<key) { //證明key在[mid+1,high]這個區間 //同樣判斷過mid對應的值要從mid+1往后判斷 low=mid+1; } else { //查找成功 return mid; } } //未成功 return notFind; } public static void main(String[] args) { System.out.println("請輸入數據數量:"); Scanner scanner=new Scanner(System.in); int amount=scanner.nextInt(); int num; int nums[]=new int[amount]; int i=0; while(i<amount) { nums[i]=scanner.nextInt(); i++; } Arrays.sort(nums); System.out.println("請輸入想要查找的值"); int key=scanner.nextInt(); int answer=rank(key,nums); if(answer!=-1) { System.out.println("所查找的數據存在:"+nums[answer]); } else { System.out.println("您所查找的數據不存在"); } } }
關于java二分法查找的實現方法就分享到這里了,當然并不止以上和大家分析的辦法,不過小編可以保證其準確性是絕對沒問題的。希望以上內容可以對大家有一定的參考價值,可以學以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。