隨筆-126  評(píng)論-247  文章-5  trackbacks-0

              
          折半查找又稱(chēng)二分法查找,查找的過(guò)程是先確定待查找數(shù)的范圍區(qū)間,然后逐步縮小查找范圍,直到找到或找不到為止。

          假設(shè)現(xiàn)有一有序數(shù)組: [ 3, 5, 8, 13, 15, 16, 20, 27, 31, 56 ],則查找關(guān)鍵字 20 的過(guò)程如下:



          C++ 實(shí)現(xiàn)代碼片段

            
          //二分法查找/折半查找
          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){  //找到,返回下標(biāo)索引值
                      return middle;
                  }
          else if(array[middle] > key){  //查找值在低半?yún)^(qū)
                      high = middle - 1;
                  }
          else{  //查找值在高半?yún)^(qū)
                      low = middle + 1;
                  }
              }
              
          return -1;  //找不到
          }
            



          Java 實(shí)現(xiàn)代碼片段

              
          //二分法查找/折半查找
          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){  //找到,返回下標(biāo)索引值
                      return middle;
                  }
          else if(array[middle] > key){  //查找值在低半?yún)^(qū)
                      high = middle - 1;
                  }
          else{  //查找值在高半?yún)^(qū)
                      low = middle + 1;
                  }
              }
              
          return -1;  //找不到
          }
              


           



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

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 枣阳市| 土默特右旗| 武威市| 黎城县| 徐汇区| 台山市| 家居| 准格尔旗| 仁寿县| 崇左市| 南投市| 陕西省| 江油市| 英吉沙县| 拉萨市| 两当县| 电白县| 平原县| 五大连池市| 惠安县| 尚义县| 股票| 会泽县| 应城市| 南宫市| 安顺市| 靖江市| 祁东县| 健康| 金乡县| 库车县| 安泽县| 比如县| 策勒县| 望都县| 乌拉特前旗| 洛川县| 甘孜| 山阳县| 武威市| 昌宁县|