隨筆 - 0, 文章 - 75, 評論 - 0, 引用 - 0
          數據加載中……

          java折半查找(面試題)

          public class TextSort2 {



          public static void main(String[] args) {
          int[]
          arrs={13,26,27,34,52,88,323}; //數組必須為有序數組
          System.out.println(find(arrs,323));
          }

          折半查找:

          數組必須為有序數組
          思路:先找到數組中間位置的數,用要查詢的數與其比較:

          如果大于中間數,則往數組中間數的較大一方(右側查找)
          如果小于中間數,則往數組中間數的較小一方(左側查找)

          如果等于中間數,則直接返回該位置
          如果沒找到,返回-1
          @param arrs 有序數組

          @param key 要查詢的數
          private static int find(int[] arrs,int key){
          int min=0; //定義最小數索引為0
          int max=arrs.length-1; //定義最大數索引為數組長度-1
          int
          middle; //定義中間數

          while(true){

          middle=(min+max)/2;   //每次得到中間數

          if(key==arrs[middle]){
          //如果key等于中間數
            return
          middle;
            }else if(key>arrs[middle]){

          min=middle+1;
          //設置最小位置min為middle+1,并從這個位置往后查找
            }else if(key<arrs[middle]){

          max=middle-1;
          //設置最大位置max為middle-1,并從這個位置往前查找

          }
            if(max<min){
          //如果最小位置min,都大于最大位置索引max,則沒找到
              return -1;
           
          }
          }
          }



          }

          posted on 2012-04-22 15:20 hantai 閱讀(106) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 江永县| 临泽县| 光山县| 中牟县| 睢宁县| 习水县| 台湾省| 衡水市| 东兰县| 碌曲县| 神池县| 静安区| 梨树县| 台州市| 大同市| 台中县| 新建县| 定州市| 河北区| 得荣县| 望城县| 政和县| 苗栗县| 平果县| 电白县| 芮城县| 望城县| 宣化县| 拉萨市| 汤原县| 甘谷县| 砀山县| 防城港市| 安泽县| 福鼎市| 高青县| 潜江市| 高台县| 扶风县| 延安市| 遂宁市|