• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 183,  comments - 10,  trackbacks - 0

            基數排序、桶排序

            這里介紹一下非比較排序
            頭緒比較亂

            編程珠璣 I 第一節中就講到一種排序方法:大批量的數排序,內存有限,利用 bitmap 可以很好的解決。時間為 O(N) 。

            對于不重復出現的數的集合,也就是說對于某個數最多只出現一次。可以利用 bitmap 來解決。因為一個 bit 只有兩個狀態: 0 和 1 。

            1.
            對于重復出現的數,可以利用一般類型數組來解決。對于每個數,以每個數為索引,記錄以該索引的元素自加 1 。處理完后,掃描這個輔助數組,將記錄的信息,也就是索引的次數,把索引以次數存入原來數組中。

            2.
            這種直接以待排序的數為索引,需要很大的輔助數組。所以可以利用針對待排序的數的每位來處理,每個位的范圍也就是 0 - 9 十的大小。對于多維的待排序數處理方式有兩種。即從左到右和從右到左。
            從左到右:左面的排完序后,整體次序不變了,只是調整的次位的相對順序。
            從右到左:右面的排完序后,整體的次序還會有變化的,只不過是隨著從右到左,依次調整的次數越來越少了。

            3.
            桶排序,對于一系列待排序數,可以先按照各個數的屬性將所有數分配到各個桶里。這樣后,對于每個桶里的數可以使用插入排序進行各個桶的排序。

             1 #include <iostream>
             2 #include <vector>
             3 #include <cstring>
             4 using namespace std;
             5 
             6 void sort(vector<int>& array)
             7 {
             8     int temp[1000];
             9     memset(temp, 0sizeof (int* 1000);
            10     for (vector<int>::size_type i = 0; i != array.size(); ++i)
            11     {
            12         ++temp[array[i]];
            13     }
            14     array.clear();
            15     for (int i = 0; i < 1000++i)
            16     {
            17         while (temp[i]-- != 0)
            18         {
            19             array.push_back(i);
            20         }
            21     }
            22 }
            23 
            24 int main()
            25 {
            26     vector<int> array;
            27     for (int i = 0; i < 10++i)
            28     {
            29         array.push_back(i);
            30     }
            31     for (int i = 10; i >= 0--i)
            32     {
            33         array.push_back(i);
            34     }
            35     sort(array);
            36     for (vector<int>::size_type i = 0; i < array.size(); ++i)
            37     {
            38         cout << array[i] << ' ';
            39     }
            40     cout << endl;
            41     return 0;
            42 }


            posted on 2011-06-21 22:45 unixfy 閱讀(381) 評論(0)  編輯 收藏 引用
            久久久久高潮综合影院| 国产精品美女久久久| 久久人搡人人玩人妻精品首页| 国内精品久久久久久久涩爱| 亚洲国产成人久久综合一区77| 亚洲欧美成人综合久久久| 成人午夜精品久久久久久久小说| 亚洲精品WWW久久久久久| 久久99久久99精品免视看动漫| 久久精品国产99久久香蕉| 久久久精品人妻一区二区三区四| 久久99亚洲综合精品首页| 亚洲成色www久久网站夜月| 国产精品久久久久一区二区三区 | 天堂无码久久综合东京热| 日韩人妻无码精品久久久不卡| 香港aa三级久久三级老师2021国产三级精品三级在 | AV无码久久久久不卡蜜桃| 色欲综合久久躁天天躁| 99久久国产主播综合精品| 久久无码人妻一区二区三区| 欧美国产成人久久精品| 亚洲精品无码专区久久同性男 | 亚洲国产一成久久精品国产成人综合 | 久久99精品久久久久久| 久久99精品国产自在现线小黄鸭 | www.久久99| 国产欧美久久久精品| 久久精品天天中文字幕人妻| 伊人久久大香线蕉av一区| 国产亚洲美女精品久久久2020| 性做久久久久久久久老女人| 久久伊人影视| 狠狠色丁香久久婷婷综合_中| 久久免费香蕉视频| 三级片免费观看久久| 精品人妻伦九区久久AAA片69| 日本强好片久久久久久AAA| 国产一久久香蕉国产线看观看| 久久免费美女视频| 性欧美大战久久久久久久|