隨筆-126  評論-247  文章-5  trackbacks-0

              
          折半查找又稱二分法查找,查找的過程是先確定待查找數的范圍區間,然后逐步縮小查找范圍,直到找到或找不到為止。

          假設現有一有序數組: [ 3, 5, 8, 13, 15, 16, 20, 27, 31, 56 ],則查找關鍵字 20 的過程如下:



          C++ 實現代碼片段

            
          //二分法查找/折半查找
          int binarySearch(Element array[], int len, int key){
              
          int low = 0, high = len - 1, middle;
              
          while(low <= high){
                  middle 
          = (low + high) / 2;
                  
          if(array[middle] == key){  //找到,返回下標索引值
                      return middle;
                  }
          else if(array[middle] > key){  //查找值在低半區
                      high = middle - 1;
                  }
          else{  //查找值在高半區
                      low = middle + 1;
                  }
              }
              
          return -1;  //找不到
          }
            



          Java 實現代碼片段

              
          //二分法查找/折半查找
          public static int binarySearch(int[] array, int key){
              
          int low = 0, high = array.length - 1, middle;
              
          while(low <= high){
                  middle 
          = (low + high) / 2;
                  
          if(array[middle] == key){  //找到,返回下標索引值
                      return middle;
                  }
          else if(array[middle] > key){  //查找值在低半區
                      high = middle - 1;
                  }
          else{  //查找值在高半區
                      low = middle + 1;
                  }
              }
              
          return -1;  //找不到
          }
              


           



            
          posted on 2013-02-06 18:34 fancydeepin 閱讀(2775) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 翁源县| 湟源县| 江阴市| 罗山县| 资溪县| 桓台县| 东乌珠穆沁旗| 乐东| 邹平县| 嘉义市| 内黄县| 阳山县| 定襄县| 玉龙| 读书| 平陆县| 嘉善县| 建德市| 株洲县| 达州市| 合江县| 武穴市| 璧山县| 登封市| 云南省| 武平县| 安塞县| 永兴县| 普兰店市| 特克斯县| 青川县| 乌拉特前旗| 栾城县| 丘北县| 华安县| 洪泽县| 惠来县| 册亨县| 临泽县| 静乐县| 九龙城区|