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

隨感而發(fā)

雜七雜八

統(tǒng)計(jì)

留言簿(13)

閱讀排行榜

評(píng)論排行榜

基數(shù)排序

今天學(xué)了基數(shù)排序,據(jù)說(shuō)他的時(shí)間復(fù)雜度也是O(n),他的思路就是:
沒(méi)有計(jì)數(shù)排序那么理想,我們的數(shù)據(jù)都比較集中,都比較大,一般是4,5位。基本沒(méi)有小的數(shù)據(jù)。
那我們的處理很簡(jiǎn)單,你不是沒(méi)有小的數(shù)據(jù)嘛。我給一個(gè)基數(shù),例如個(gè)位,個(gè)位都是[0-10)范圍內(nèi)的。先對(duì)他進(jìn)行歸類,把小的放上面,大的放下面,然后個(gè)位排好了,在來(lái)看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è)問(wèn)題。書上說(shuō)的是一疊一疊的怎么合并,我是沒(méi)有理解的。希望知道的有高手教我一下。

我是用的一個(gè)計(jì)數(shù)排序來(lái)排各位的,然后排十位。效率應(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)要一致
//也就是說(shuō)npIndex[1] 所對(duì)應(yīng)的值為npData[1]
int RadixCountSort(int* npIndex, int nMax, int* npData, int nLen)
{
    
//這里就不用說(shuō)了,計(jì)數(shù)的排序。不過(guò)這里為了是排序穩(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 閱讀(13435) 評(píng)論(2)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)和算法

評(píng)論

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

你的這個(gè)程序有一定的問(wèn)題
比如這組數(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)問(wè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一区二区三区在线观看| 欧美日韩国产二区| 美女精品视频一区| 欧美一级理论片| 亚洲网址在线| 99在线观看免费视频精品观看| 麻豆九一精品爱看视频在线观看免费 | 新67194成人永久网站| 亚洲精品一二区| 亚洲国产精品久久精品怡红院 | 亚洲欧洲三级电影| 欧美ed2k| 蜜臀av性久久久久蜜臀aⅴ| 久久福利影视| 欧美影视一区| 性色av一区二区三区| 亚洲一区二区三区四区五区午夜 | 久久久久久久激情视频| 欧美亚洲免费在线| 亚洲综合色噜噜狠狠| 亚洲伦理在线观看| 最近中文字幕日韩精品| 亚洲高清自拍| 亚洲国产日韩综合一区| 欧美大片在线影院| 欧美11—12娇小xxxx| 六月婷婷久久| 欧美成人精品三级在线观看| 欧美jizzhd精品欧美喷水| 免费在线观看一区二区| 美女网站久久| 欧美大片专区| 亚洲欧洲另类国产综合| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲人成在线播放网站岛国| 亚洲经典一区| 99在线精品视频| 亚洲一区二区三区四区视频| 亚洲欧美福利一区二区| 欧美一级理论片| 久久久99精品免费观看不卡| 另类春色校园亚洲| 欧美高清hd18日本| 亚洲精品视频在线播放| 一区二区三区免费看| 亚洲香蕉视频| 欧美主播一区二区三区美女 久久精品人 | 亚洲人成网站在线观看播放| 亚洲精品久久嫩草网站秘色| 一区二区三区av| 亚洲欧美日韩视频二区| 久久精品国产精品亚洲| 欧美电影免费观看高清完整版| 欧美日韩不卡在线| 欧美午夜免费| 国产一区二区三区四区在线观看| 国模吧视频一区| 亚洲人成人77777线观看| 亚洲一区二区三区四区中文 | 欧美日韩国产小视频| 欧美日韩一区自拍| 国产伦精品一区二区三区免费迷 | 欧美激情一区在线观看| 国产精品v日韩精品| 国产亚洲欧美日韩精品| 亚洲国产精品久久91精品| 99热免费精品在线观看| 欧美亚洲一区二区在线| 女人香蕉久久**毛片精品| 亚洲精品影视| 久久爱另类一区二区小说| 农夫在线精品视频免费观看| 欧美性大战xxxxx久久久| 韩国一区二区三区在线观看| 日韩一区二区电影网| 欧美专区福利在线| 亚洲国产另类久久精品| 亚洲一区视频在线| 欧美风情在线观看| 国产精品一二三四区| 亚洲人人精品| 久久久久久久999精品视频| 亚洲欧洲三级| 欧美在线视频播放| 欧美日韩天堂| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产精品自拍在线| 亚洲伦伦在线| 另类图片综合电影| 亚洲天堂黄色| 欧美成人情趣视频| 狠狠入ady亚洲精品经典电影| 亚洲午夜日本在线观看| 欧美v亚洲v综合ⅴ国产v| 亚洲私人影院| 欧美人在线观看| 激情成人综合| 久久精品99无色码中文字幕| 99国产精品久久久| 欧美91大片| 黄色精品一区| 久久激情综合| 一区二区三区日韩欧美| 欧美成年人视频网站| 韩国欧美一区| 欧美在线一二三| 亚洲深夜福利在线| 欧美视频福利| 一区二区三区高清不卡| 欧美激情中文字幕一区二区| 久久精品天堂| 国产午夜精品一区理论片飘花 | 国产精品久久久久9999高清| 亚洲精品乱码久久久久久| 久久综合国产精品| 欧美一区二区在线免费播放| 国产精品免费福利| 亚洲在线一区二区| 99在线|亚洲一区二区| 欧美精品在线一区二区| 亚洲精品一区久久久久久| 欧美国产精品v| 蜜桃久久av一区| 亚洲国产99精品国自产| 老司机精品福利视频| 久久成人av少妇免费| 韩国在线一区| 鲁鲁狠狠狠7777一区二区| 久久久久久9999| 韩日欧美一区二区| 久久精品欧美日韩| 欧美一区二区免费| 国模吧视频一区| 久久综合狠狠综合久久综合88| 亚洲女性裸体视频| 韩国三级在线一区| 你懂的国产精品| 欧美国产丝袜视频| 夜夜嗨av一区二区三区中文字幕 | 亚洲人成人一区二区三区| 亚洲第一网站| 欧美啪啪一区| 亚洲制服少妇| 午夜免费电影一区在线观看 | 亚洲深爱激情| 亚洲专区国产精品| 黑人巨大精品欧美一区二区| 免费看的黄色欧美网站| 欧美激情欧美狂野欧美精品| 一区二区国产精品| 亚洲免费视频网站| 黑人操亚洲美女惩罚| 欧美二区视频| 欧美三级第一页| 久久国产精品亚洲va麻豆| 久久久久久网| 亚洲精品综合精品自拍| 一区二区三区国产精品| 国产综合香蕉五月婷在线| 亚洲电影免费观看高清| 欧美激情免费在线| 欧美一级久久久| 久久婷婷麻豆| 亚洲午夜一区二区| 久久精品99无色码中文字幕| 亚洲精品日韩在线| 亚洲男同1069视频| 亚洲国产导航| 亚洲一区二区精品在线| 一区二区三区在线高清| 亚洲精品资源| 在线观看视频免费一区二区三区| 亚洲人成在线免费观看| 国产欧美一区二区精品性 | 在线观看日韩av电影| 亚洲美女中文字幕| 国户精品久久久久久久久久久不卡 | 欧美日韩国产在线观看| 欧美专区在线| 欧美精品一区二| 久久免费精品视频| 欧美三级午夜理伦三级中文幕 | 免费亚洲网站| 欧美一区二区三区免费观看视频| 快射av在线播放一区| 亚洲欧美视频在线观看视频| 美日韩精品免费| 久久精品一区二区三区中文字幕 | 香蕉久久一区二区不卡无毒影院| 玖玖在线精品| 久久久999| 国产精品久线观看视频| 亚洲激情图片小说视频| 黄色成人在线免费| 亚洲午夜成aⅴ人片|