<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 117  文章 - 72  trackbacks - 0

    聲明:原創作品(標有[原]字樣)轉載時請注明出處,謝謝。

    常用鏈接

    常用設置
    常用軟件
    常用命令
     

    訂閱

    訂閱

    留言簿(7)

    隨筆分類(130)

    隨筆檔案(123)

    搜索

    •  

    積分與排名

    • 積分 - 155671
    • 排名 - 391

    最新評論

    Java二分查找實現,歡迎大家提出交流意見.
    /**
    *名稱:BinarySearch
    *功能:實現了折半查找(二分查找)的遞歸和非遞歸算法.
    *說明:
    *     1、要求所查找的數組已有序,并且其中元素已實現Comparable<T>接口,如Integer、String等.
    *    2、非遞歸查找使用search();,遞歸查找使用searchRecursively();
    *
    *本程序僅供編程學習參考
    *
    *@author:   Winty
    *@date:     2008-8-11
    *@email:    [email]wintys@gmail.com[/email]
    */


    class BinarySearch<T extends Comparable<T>> {
        private T[]  data;//要排序的數據

        public BinarySearch(T[] data){
            this.data = data;
        }

        public int search(T key){
            int low;
            int high;
            int mid;

            if(data == null)
                return -1;

            low = 0;
            high = data.length - 1;

            while(low <= high){
                mid = (low + high) / 2;
                System.out.println("mid " + mid + " mid value:" + data[mid]);///
                
                if(key.compareTo(data[mid]) < 0){
                    high = mid - 1;
                }else if(key.compareTo(data[mid]) > 0){
                    low = mid + 1;
                }else if(key.compareTo(data[mid]) == 0){
                    return mid;
                }
            }

            return -1;
        }

        private int doSearchRecursively(int low , int high , T key){
            int mid;
            int result;

            if(low <= high){
                mid = (low + high) / 2;
                result = key.compareTo(data[mid]);
                System.out.println("mid " + mid + " mid value:" + data[mid]);///
                
                if(result < 0){
                    return doSearchRecursively(low , mid - 1 , key);
                }else if(result > 0){
                    return doSearchRecursively(mid + 1 , high , key);
                }else if(result == 0){
                    return mid;
                }
            }
            
            return -1;
        }

        public int searchRecursively(T key){
            if(data ==null)return -1;

            return doSearchRecursively(0 , data.length - 1 , key);
        }

        public static void main(String[] args){
            Integer[] data = {1 ,4 ,5 ,8 ,15 ,33 ,48 ,77 ,96};
            BinarySearch<Integer> binSearch = new BinarySearch<Integer>(data);
            //System.out.println("Key index:" + binSearch.search(33) );

            System.out.println("Key index:" + binSearch.searchRecursively(3) );

            //String [] dataStr = {"A" ,"C" ,"F" ,"J" ,"L" ,"N" ,"T"};
            //BinarySearch<String> binSearch = new BinarySearch<String>(dataStr);
            //System.out.println("Key index:" + binSearch.search("A") );
        }
    }


    文章來源:http://wintys.blog.51cto.com/425414/94051
    posted on 2009-03-18 12:02 天堂露珠 閱讀(501) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 亚洲综合区小说区激情区| 青青青青青青久久久免费观看 | 亚洲日本va在线观看| 99爱在线精品视频免费观看9| 久久精品国产亚洲av麻豆| 青青草原1769久久免费播放| 国产亚洲一区二区三区在线| 免费91麻豆精品国产自产在线观看 | 亚洲乱人伦中文字幕无码| 男女交性永久免费视频播放| 亚洲avav天堂av在线网毛片| 免费A级毛片无码A| 久久精品成人免费国产片小草| 亚洲熟妇av一区二区三区漫画| 国内精品久久久久影院免费| 亚洲宅男永久在线| 皇色在线视频免费网站| 亚洲精品国产首次亮相| 亚洲美女在线国产| 最近更新免费中文字幕大全| 亚洲视频手机在线| 成人免费视频一区| 女人裸身j部免费视频无遮挡| 国产成人综合亚洲AV第一页| 少妇太爽了在线观看免费视频| 91亚洲视频在线观看| 国产成人高清精品免费软件| 人与动性xxxxx免费| 亚洲最新永久在线观看| 最近的中文字幕大全免费版| 一级毛片免费在线| 久久国产亚洲精品无码| 国产成人精品免费视频大全五级| 国产日韩久久免费影院| 亚洲精品乱码久久久久久下载| 插B内射18免费视频| 日批视频网址免费观看| 在线观看亚洲AV日韩AV| 狠狠亚洲婷婷综合色香五月排名| 麻豆视频免费观看| 国产精品免费在线播放|