青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨感而發(fā)

雜七雜八

統(tǒng)計(jì)

留言簿(13)

閱讀排行榜

評(píng)論排行榜

基數(shù)排序

今天學(xué)了基數(shù)排序,據(jù)說他的時(shí)間復(fù)雜度也是O(n),他的思路就是:
沒有計(jì)數(shù)排序那么理想,我們的數(shù)據(jù)都比較集中,都比較大,一般是4,5位?;緵]有小的數(shù)據(jù)。
那我們的處理很簡(jiǎn)單,你不是沒有小的數(shù)據(jù)嘛。我給一個(gè)基數(shù),例如個(gè)位,個(gè)位都是[0-10)范圍內(nèi)的。先對(duì)他進(jìn)行歸類,把小的放上面,大的放下面,然后個(gè)位排好了,在來看10位,我們也這樣把小的放上面,大的放下面,依次內(nèi)推,直到最高位排好。那么不就排好了嗎?我們只需要做d(基數(shù)個(gè)數(shù))的循環(huán)就可以了。時(shí)間復(fù)雜度相當(dāng)于O(d * n) 因?yàn)閐為常量,例如5位數(shù),d就是5.所以近似為O(n)的時(shí)間復(fù)雜度。這次自己寫個(gè)案例:

最初的數(shù)據(jù)

排好個(gè)位的數(shù)據(jù)

排好十位的數(shù)據(jù)

排好百位的數(shù)據(jù)

981

981

725

129

387

753

129

387

753

955

753

456

129

725

955

725

955

456

456

753

725

387

981

955

456

129

387

981

這里只需循環(huán)3次就出結(jié)果了。

<!--[if !supportLists]-->3.       <!--[endif]-->但是注意,我們必須要把個(gè)位排好。但是個(gè)位怎么排呢?這個(gè)是個(gè)問題。書上說的是一疊一疊的怎么合并,我是沒有理解的。希望知道的有高手教我一下。

我是用的一個(gè)計(jì)數(shù)排序來排各位的,然后排十位。效率應(yīng)該也低不到哪里去。呵呵。。

思路就這樣咯。奉上源代碼:

 

#include <stdio.h>
#include 
<stdlib.h>

//計(jì)數(shù)排序,npRadix為對(duì)應(yīng)的關(guān)鍵字序列,nMax是關(guān)鍵字的范圍。npData是具體要
//排的數(shù)據(jù),nLen是數(shù)據(jù)的范圍,這里必須注意npIndex和npData對(duì)應(yīng)的下標(biāo)要一致
//也就是說npIndex[1] 所對(duì)應(yīng)的值為npData[1]
int RadixCountSort(int* npIndex, int nMax, int* npData, int nLen)
{
    
//這里就不用說了,計(jì)數(shù)的排序。不過這里為了是排序穩(wěn)定
    
//在標(biāo)準(zhǔn)的方法上做了小修改。

    
int* pnCount  = (int*)malloc(sizeof(int)* nMax);        //保存計(jì)數(shù)的個(gè)數(shù)
    for (int i = 0; i < nMax; ++i)
    {
        pnCount[i] 
= 0;
    }
    
for (int i = 0; i < nLen; ++i)    //初始化計(jì)數(shù)個(gè)數(shù)
    {
        
++pnCount[npIndex[i]];
    }

    
for (int i = 1; i < 10++i)  //確定不大于該位置的個(gè)數(shù)。
    {
        pnCount[i] 
+= pnCount[i - 1];
    }

    
int * pnSort  = (int*)malloc(sizeof(int* nLen);    //存放零時(shí)的排序結(jié)果。

    
//注意:這里i是從nLen-1到0的順序排序的,是為了使排序穩(wěn)定。
    for (int i = nLen - 1; i >= 0--i)
    {
        
--pnCount[npIndex[i]];        
        pnSort[pnCount[npIndex[i]]] 
= npData[i];
    }

    
for (int i = 0; i < nLen; ++i)        //把排序結(jié)構(gòu)輸入到返回的數(shù)據(jù)中。
    {
        npData[i] 
= pnSort[i];
    }
    free(pnSort);                        
//記得釋放資源。
    free(pnCount);
    
return 1;
}

//基數(shù)排序
int RadixSort(int* nPData, int nLen)
{
    
//申請(qǐng)存放基數(shù)的空間
    int* nDataRadix    = (int*)malloc(sizeof(int* nLen);

    
int nRadixBase = 1;    //初始化倍數(shù)基數(shù)為1
    bool nIsOk = false//設(shè)置完成排序?yàn)閒alse

    
//循環(huán),知道排序完成
    while (!nIsOk)
    {
        nIsOk 
= true;
        nRadixBase 
*= 10;
        
for (int i = 0; i < nLen; ++i)
        {
            nDataRadix[i] 
= nPData[i] % nRadixBase;
            nDataRadix[i] 
/= nRadixBase / 10;
            
if (nDataRadix[i] > 0)
            {
                nIsOk 
= false;
            }
        }
        
if (nIsOk)        //如果所有的基數(shù)都為0,認(rèn)為排序完成,就是已經(jīng)判斷到最高位了。
        {
            
break;
        }
        RadixCountSort(nDataRadix, 
10, nPData, nLen);
    }

    free(nDataRadix);

    
return 1;
}

int main()
{
    
//測(cè)試基數(shù)排序。
    int nData[10= {123,5264,9513,854,9639,1985,159,3654,8521,8888};
    RadixSort(nData, 
10);
    
for (int i = 0; i < 10++i)
    {
        printf(
"%d ", nData[i]);
    }
    printf(
"\n");

    system(
"pause");
    
return 0;
}

 


posted on 2009-04-24 21:36 shongbee2 閱讀(13432) 評(píng)論(2)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)和算法

評(píng)論

# re: 基數(shù)排序[未登錄] 2012-06-02 10:01 MICHAEL

你的這個(gè)程序有一定的問題
比如這組數(shù)據(jù):
int nData[10] = {1046,2084,9046,12074,56,7026,8099,17059,33,1};
  回復(fù)  更多評(píng)論   

# re: 基數(shù)排序 2013-06-28 13:49 hum

試了下,確實(shí)有點(diǎn)問題,修改一下就好了。
修改前
if (nDataRadix[i] > 0)
{
nIsOk = false;
}
修改后:
if (nPData[i]/nRadixBase > 0)
{
nIsOk = false;
}  回復(fù)  更多評(píng)論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            蜜桃av久久久亚洲精品| 亚洲在线国产日韩欧美| 国产精品高精视频免费| 欧美日韩一区二区视频在线| 欧美日韩国产一级片| 欧美精品免费播放| 欧美日韩麻豆| 国产视频亚洲| 激情综合在线| 亚洲精品影院| 午夜精品久久久久久久久久久久久| 午夜精彩视频在线观看不卡| 欧美在线视频免费播放| 欧美一级视频精品观看| 欧美专区在线观看| 久久久青草婷婷精品综合日韩| 女生裸体视频一区二区三区| 亚洲三级电影全部在线观看高清| 亚洲免费精彩视频| 亚洲一区欧美| 欧美大片专区| 国产欧美精品一区aⅴ影院| 亚洲国产高潮在线观看| 亚洲午夜一级| 欧美14一18处毛片| 亚洲素人一区二区| 免费的成人av| 国产拍揄自揄精品视频麻豆| 91久久精品一区二区三区| 欧美亚洲免费| 亚洲三级色网| 久久久久一区二区三区| 欧美网站在线观看| 亚洲风情亚aⅴ在线发布| 亚洲欧美久久久久一区二区三区| 欧美国产先锋| 久久青青草综合| 国产精品婷婷| 99精品视频一区二区三区| 另类成人小视频在线| 亚洲欧美国产精品桃花 | 午夜国产一区| 欧美母乳在线| 亚洲精选91| 亚洲韩国日本中文字幕| 久久久久久久尹人综合网亚洲| 国产精品影片在线观看| 午夜日本精品| 一区二区国产精品| 欧美女同在线视频| 亚洲理伦在线| 亚洲高清视频一区| 蜜桃伊人久久| 亚洲破处大片| 最新国产成人av网站网址麻豆| 欧美成年人网站| 亚洲精品在线视频| 亚洲黄色精品| 欧美日韩三级电影在线| 在线亚洲一区| 亚洲一区精品在线| 国产精品久久久久久久久久三级| 中文高清一区| 亚洲女人天堂av| 黄色资源网久久资源365| 久久久综合精品| 久久综合色天天久久综合图片| 亚洲国产导航| 亚洲免费av片| 国产精品美女www爽爽爽| 亚洲自啪免费| 欧美自拍偷拍| 久久亚洲精品伦理| 欧美一区二区三区在线| 激情av一区二区| 亚洲福利免费| 欧美日韩免费一区| 亚洲欧美日韩在线观看a三区| 亚洲免费在线看| 在线成人www免费观看视频| 欧美二区在线观看| 欧美亚日韩国产aⅴ精品中极品| 欧美中在线观看| 免费欧美在线| 午夜精品久久久久久99热| 久久精品一二三| av成人毛片| 久久av一区二区三区| 91久久在线播放| 亚洲一区二区高清视频| 国产一区美女| 亚洲激情综合| 国产九九视频一区二区三区| 欧美福利视频在线观看| 国产精品亚洲а∨天堂免在线| 免播放器亚洲| 国产精品久久77777| 久久久精品一品道一区| 欧美日韩午夜视频在线观看| 久久精品国产久精国产爱| 欧美成人免费播放| 久久在线免费| 国产精品激情偷乱一区二区∴| 欧美福利网址| 国产一区二区三区四区五区美女 | 性欧美xxxx视频在线观看| 亚洲精品1区2区| 亚洲综合第一| 99精品国产在热久久婷婷| 久久精品亚洲乱码伦伦中文 | 亚洲高清视频在线| 亚洲欧美成人| 亚洲色图制服丝袜| 欧美va亚洲va香蕉在线| 久久米奇亚洲| 国产麻豆日韩| 亚洲网址在线| 亚洲视频日本| 欧美日本三级| 亚洲日本成人在线观看| 亚洲国产经典视频| 久久亚洲欧美| 美女91精品| 伊人久久久大香线蕉综合直播| 午夜精品久久久久久久久 | 欧美黑人国产人伦爽爽爽| 国产美女精品人人做人人爽| 亚洲伊人观看| 羞羞答答国产精品www一本| 久久视频在线视频| 亚洲精品在线观看视频| 午夜视频久久久| 国产一区二区三区网站| 亚洲六月丁香色婷婷综合久久| 国产日韩在线一区| 亚洲综合99| 亚洲摸下面视频| 国产精品成人观看视频免费| 91久久精品国产91久久性色tv| 尤物在线观看一区| 巨胸喷奶水www久久久免费动漫| 久久米奇亚洲| 樱桃视频在线观看一区| 久久蜜臀精品av| 欧美黄色成人网| 91久久精品久久国产性色也91| 欧美96在线丨欧| 亚洲欧洲在线观看| 亚洲一区日韩在线| 国产精品视频免费观看| 亚洲永久免费| 久久综合九色99| 亚洲人成网站精品片在线观看| 欧美乱人伦中文字幕在线| 99re在线精品| 亚洲欧美在线播放| 国产一区二区三区久久悠悠色av | 午夜视频精品| 久久久亚洲影院你懂的| 亚洲黄色有码视频| 欧美色网在线| 亚洲欧美日韩区| 老妇喷水一区二区三区| 91久久精品美女高潮| 欧美吻胸吃奶大尺度电影| 欧美一区二区三区在线看| 国产美女精品免费电影| 久久久午夜视频| 一区二区三区国产精品| 久久久久久久一区二区| 亚洲乱码视频| 国产视频观看一区| 欧美精品久久天天躁| 欧美亚洲在线| 亚洲精品1区2区| 久久久久久穴| 在线亚洲欧美专区二区| 精品不卡一区| 国产精品久久久久9999| 久久综合狠狠综合久久激情| 99视频精品免费观看| 欧美成人自拍视频| 欧美一区二区三区在线播放| 亚洲精品乱码久久久久久久久 | 午夜在线播放视频欧美| 在线成人av| 国产精品自拍网站| 欧美精品日本| 久久手机免费观看| 亚洲免费中文字幕| 欧美人成网站| 日韩网站在线| 亚洲高清网站| 久久精品中文字幕免费mv| 一区二区三区日韩在线观看| 伊人成人在线| 国内在线观看一区二区三区| 国产精品扒开腿做爽爽爽视频| 欧美a级理论片| 久久综合九色综合欧美就去吻|