<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)

    搜索

    •  

    積分與排名

    • 積分 - 155757
    • 排名 - 390

    最新評論

    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 天堂露珠 閱讀(502) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 亚洲网站在线播放| 亚洲精品一品区二品区三品区| 亚洲国产一区在线观看| 30岁的女人韩剧免费观看| 精品亚洲麻豆1区2区3区| 最近免费中文字幕高清大全| 亚洲经典在线观看| 久久久久久精品免费免费自慰| 亚洲精品**中文毛片| 中文字幕人成无码免费视频| 亚洲精品无码专区久久| 永久免费看bbb| 免费观看又污又黄在线观看| 国产自偷亚洲精品页65页| 久久久久久免费一区二区三区 | 亚洲AV无码不卡在线观看下载| 国产精品免费观看视频| 色久悠悠婷婷综合在线亚洲| 99视频免费在线观看| 亚洲卡一卡2卡三卡4卡无卡三| 久久久久久精品成人免费图片| 亚洲一本之道高清乱码| 国产伦精品一区二区免费| 亚洲精品无码久久久久去q | 中文字幕不卡免费高清视频| 久久精品国产亚洲AV麻豆王友容| 国产成人免费午夜在线观看 | 3344在线看片免费| 亚洲精品视频专区| 日韩精品免费电影| 中文字幕成人免费高清在线视频 | 国产青草亚洲香蕉精品久久 | 久久精品国产99精品国产亚洲性色| 最近2022中文字幕免费视频| 亚洲精品久久无码| 亚洲国产精品嫩草影院在线观看| 性一交一乱一视频免费看| 一道本不卡免费视频| 亚洲成a人不卡在线观看| jjzz亚洲亚洲女人| 成人免费视频网站www|