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

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

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

    weidagang2046的專欄

    物格而后知致
    隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0
    數據加載中……

    位圖(bitmap)排序

    放假之前從圖書館借來《編程珠璣》,開篇便把我震住,作者以位圖排序優雅地解決了一個現實問題:
    有3000萬個沒有重復的電話號碼,1M內存,外存比較充裕,需要將這3000萬個電話排序
    借此作者引出了位圖排序:
    位圖排序是指以一個N位長的串,每位上以“1”或“0”表示需要排序的集合(后簡稱“集合”)中的數。比如集合為{2,7,4,9,1,10},則生成一個10位的串,將第2、7、4、9、1、10位置為“1”,其余位置為“0”,這樣當把串中所有位都置完后,排序也自動完成了(因為串的下標是有序的):1101001011
    位圖排序的代碼如下:

    public void bitmapSort(int[] set){
      
    int max=max(set);
      
    int[] array=new int[max];
      
      
    for(int i=0;i<array.length;i++)
        array[i]
    =0;

      
    for(int i=0;i<set.length;i++)
        array[
    set[i]]=1;

      
    for(int i=0;i<array.length;i++){
        
    if(array[i]==1)
          System.
    out.println(i+” ”);
      }

    }


    private int max(int[] set){
      
    // return the maxium integer of the set
    }


    可以看出,位圖排序的時間復雜度是O(n)的,比一般的排序都快,但它是以空間換時間(需要一個N位的串),而且有一些限制,比如排序前集合大小最好已知,而且集合中元素的最大重復次數必須已知,最好是稠集數據(不然空間浪費很大)。

    posted on 2005-10-28 15:25 weidagang2046 閱讀(638) 評論(0)  編輯  收藏 所屬分類: Others

    主站蜘蛛池模板: 中文字幕视频免费在线观看| 1区2区3区产品乱码免费| 亚洲啪啪AV无码片| 999久久久免费精品国产| 日韩国产欧美亚洲v片| 久久精品国产亚洲综合色| 久久经典免费视频| 国产黄片不卡免费| 亚洲国产韩国一区二区| 亚洲第一区精品观看| 亚洲国产天堂久久久久久| 亚洲精品GV天堂无码男同| 国产成人精品日本亚洲专区| 中文字幕免费观看| 免费看一级一级人妻片| 亚洲精品国产电影午夜| 亚洲欧洲久久久精品| 无码人妻久久一区二区三区免费丨| 国产精品九九久久免费视频| 亚洲性色高清完整版在线观看| 国产乱辈通伦影片在线播放亚洲| 最近中文字幕免费mv视频8| a级毛片在线免费| 国产亚洲一卡2卡3卡4卡新区 | 亚洲狠狠综合久久| 免费A级毛片无码A| 2021久久精品免费观看| 国产性生大片免费观看性 | 中文字幕一区二区三区免费视频| 99久久国产亚洲综合精品| 亚洲av之男人的天堂网站| 免费在线视频一区| 在线a毛片免费视频观看| 91av视频免费在线观看| xxxxx做受大片在线观看免费| 亚洲欧美日韩国产精品一区| 亚洲天天在线日亚洲洲精| 亚洲日韩av无码| 亚洲精品一级无码鲁丝片| 国产又黄又爽又刺激的免费网址 | 亚洲视频免费一区|