和風細雨

          世上本無難事,心以為難,斯乃真難。茍不存一難之見于心,則運用之術自出。

          二分法查找示例

          package com.junglesong;

          /**
           * 二分查找示例
           * 
          @author: sitinspring(junglesong@gmail.com)
           * @date: 2008-3-8
           
          */

          public class BinSearch{
              
          public static void main(String[] args){
                  
          // 欲查找的數組
                  int[] arr={1,2,3,4,5,6,77,88,656,5000,40000};
                  
                  
          // 測試數組
                  int[] temp={4,5,6,77,88,656,1,2,400};        
                  
          for(int i:temp){
                      System.out.println(
          ""+i+"的下標為"+binSearch(arr,i));
                  }

              }

              
              
          /**
               * 二分查找
               * 
          @param sortedArray 已排序的欲查找的數組
               * 
          @param seachValue 查找的值
               * 
          @return 找到的元素下標,若找不到則返回-1
               
          */

              
          public static int binSearch(int[] sortedArray,int seachValue){
                  
          // 左邊界
                  int leftBound=0;
                  
          // 右邊界
                  int rightBound=sortedArray.length-1;
                  
          // 當前下標位置
                  int curr;
                  
                  
          while(true){
                      
          // 定位在左邊界和右邊界中間
                      curr=(leftBound+rightBound)/2;
                      
                      
          if(sortedArray[curr]==seachValue){
                          
          // 找到值
                          return curr;
                      }

                      
          else if(leftBound>rightBound){
                          
          // 左邊界大于右邊界,已經找不到值
                          return -1;
                      }

                      
          else{
                          
          if(sortedArray[curr]<seachValue){
                              
          // 當當前下標對應的值小于查找的值時,縮短左邊界
                              leftBound=curr+1;
                          }

                          
          else{
                              
          // 當當前下標對應的值大于查找的值時,縮短右邊界
                              rightBound=curr-1;
                          }

                      }

                  }

              }

          }

          代碼下載:
          http://www.aygfsteel.com/Files/junglesong/BinSearch20080308150836.rar

          posted on 2008-03-08 14:26 和風細雨 閱讀(412) 評論(0)  編輯  收藏 所屬分類: 算法

          主站蜘蛛池模板: 五莲县| 莲花县| 桐城市| 政和县| 五寨县| 西充县| 三江| 新乡县| 巩留县| 临西县| 克山县| 南昌市| 邵武市| 吉水县| 沙洋县| 沂南县| 乐清市| 奈曼旗| 山西省| 柯坪县| 盐亭县| 崇阳县| 安平县| 榆中县| 寻乌县| 巍山| 合江县| 凌源市| 金沙县| 辽宁省| 张家界市| 隆昌县| 敖汉旗| 繁昌县| 米林县| 新宾| 泊头市| 绥中县| 常熟市| 金寨县| 宣城市|