亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這個二分查找法有一點不懂

這個二分查找法有一點不懂

慕先生4463397 2017-10-12 16:25:09
/**?* 二分法查找?* 二分法查找建立在已經排序好的基礎上 ??*/public class BinaryChopTest { public static void main(String[] args) { int []arry = {1,3,4,5,8,10,15,25,29}; Scanner in = new Scanner(System.in); System.out.println("請輸入您要查找的元素:"); int num = in.nextInt(); System.out.println(binarySearch(arry,num)); } public static String binarySearch(int [] a,int num){ int begin = 0; int end = a.length-1; while(begin<=end){ int mid = (begin+end)/2; if(a[mid]==num){ return "您輸入的數的下標是:"+mid; } if(a[mid]>num){ end = mid-1; } if(a[mid]<num){ begin = mid+1; } } return "您輸入的數不在當前數組中"; }}最后那兩個if啥意思不太懂
查看完整描述

1 回答

?
芝麻大點

TA貢獻7條經驗 獲得超1個贊

這里是重新定義區間的方法,第一個if:如果輸入的值小于中間值,則輸入的值肯定在前半段,所以結束值向前移一位,第二個if:這個則相反,如果輸入值大于中間值,則輸入的值肯定在后半段,所以開始值向后移一位,這樣就慢慢接近輸入的那個值了。

查看完整回答
反對 回復 2017-10-12
  • 慕先生4463397
    慕先生4463397
    package com.zdhddcjj.數組2; public class Dichotomy { public static void main(String[] args) { int arr[]={1,3,5,8,45,87,99,33}; System.out.println(lookup(arr,1)); } public static String lookup(int[] arr,int num){ int index=arr.length-1; int value=0; while(value<=index){ int miv=(index+value)/2; if(arr[miv]==num){ return "您輸入的下標是:"+miv; } if(arr[miv]<num){ index=miv-1; } if(arr[miv]>num){ value=miv+1; } } return "您輸入的數不在數組之中"; } } 就是只有查找1查找不出來
  • 1 回答
  • 0 關注
  • 1604 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號