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

隨感而發(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>
            久久嫩草精品久久久精品| 永久免费毛片在线播放不卡| 国产欧美日韩视频一区二区三区 | 亚洲精品乱码久久久久久日本蜜臀| 久久综合福利| 亚洲欧洲日本mm| 久久本道综合色狠狠五月| 亚洲国产婷婷综合在线精品 | 老色批av在线精品| 日韩一级精品| 亚洲伊人一本大道中文字幕| 欧美国产先锋| 国产精品久久久久久av下载红粉| 免费日韩av片| 亚洲电影免费观看高清| 亚洲在线成人| 欧美xxx在线观看| 亚洲精品资源| 亚洲欧美国产精品va在线观看| 亚洲美女毛片| 亚洲国产日韩精品| 日韩视频在线观看免费| 国产老女人精品毛片久久| 一区二区三区四区精品| 亚洲精品小视频| 久久久久久成人| 欧美h视频在线| 亚洲国产一区二区视频| 亚洲尤物在线视频观看| 亚洲国产成人久久| 亚洲第一视频| 免费亚洲电影| 在线观看成人一级片| 久久福利精品| 午夜视频在线观看一区二区| 久久精品国产99精品国产亚洲性色| 中日韩美女免费视频网址在线观看| 亚洲免费精品| 欧美在线啊v| 免费在线视频一区| 欧美性事免费在线观看| 久久免费国产精品1| 亚洲影视中文字幕| 亚洲午夜国产成人av电影男同| 亚洲综合视频一区| 久久青草欧美一区二区三区| 欧美va亚洲va日韩∨a综合色| 免费在线欧美视频| 亚洲国产精品va在线观看黑人| 免费视频一区| 午夜精品久久久久久久久| 欧美在线免费一级片| 欧美午夜三级| 亚洲免费高清| 久久精品人人做人人爽电影蜜月| 性欧美1819性猛交| 欧美韩日一区二区三区| 日韩亚洲精品视频| 久久久精品免费视频| 欧美极品aⅴ影院| 亚洲国产小视频在线观看| 亚洲国产日韩在线一区模特| 亚洲欧美日韩国产成人| 99亚洲一区二区| 欧美日韩亚洲综合| 欧美一区二区三区四区在线观看 | 葵司免费一区二区三区四区五区| a4yy欧美一区二区三区| 久久久久久久91| 国产精品每日更新在线播放网址| 午夜在线精品| 午夜精品视频在线观看| 激情视频一区二区| 欧美日韩综合一区| 麻豆精品视频| 国产日韩欧美中文在线播放| 香蕉免费一区二区三区在线观看 | 午夜电影亚洲| 亚洲日本电影在线| 亚洲国产日韩欧美在线99| 久久久国产午夜精品| 国产欧美日韩中文字幕在线| 欧美专区在线观看一区| 久久综合伊人77777| 亚洲毛片一区二区| 久久久久www| 99亚洲一区二区| 久久国产毛片| 久久亚洲二区| 国产精品一区二区三区四区| 久久久精品日韩| 欧美区一区二区三区| 鲁大师影院一区二区三区| 国产精品v日韩精品v欧美精品网站| 亚洲国产成人tv| 国产亚洲网站| 欧美伊人久久| 欧美一区中文字幕| 国产精品亚洲一区二区三区在线| 亚洲国产mv| 亚洲国产日韩欧美一区二区三区| 久久精品日韩欧美| 久久久久久一区二区| 国产一区二区剧情av在线| 欧美成年人视频网站| 精品99视频| 欧美黄色免费| 亚洲国语精品自产拍在线观看| 欧美丰满高潮xxxx喷水动漫| 激情成人中文字幕| 亚洲每日在线| 亚洲视频www| 日韩午夜中文字幕| 欧美国产亚洲视频| 99精品国产99久久久久久福利| 最新亚洲一区| 女主播福利一区| 亚洲乱码久久| 欧美一区二区日韩一区二区| 国产伦精品一区二区三区视频孕妇| 亚洲一区综合| 久久久久99精品国产片| 尤物yw午夜国产精品视频| 免费国产一区二区| 9色国产精品| 欧美中在线观看| 激情国产一区二区| 欧美aa国产视频| 一区二区三区精品国产| 欧美一区二区三区四区视频 | 亚洲免费一在线| 久热精品在线视频| 一区二区三区欧美日韩| 国产日产精品一区二区三区四区的观看方式| 久久激情视频| 亚洲毛片一区| 久久综合综合久久综合| 99热这里只有成人精品国产| 国产一区av在线| 欧美日韩亚洲三区| 久久婷婷av| 亚洲小说欧美另类社区| 欧美大尺度在线观看| 午夜激情亚洲| 亚洲另类春色国产| 激情综合色综合久久| 欧美日韩亚洲一区二区三区在线| 亚洲综合色视频| 亚洲精品视频在线观看网站| 久久视频在线视频| 午夜久久美女| 在线综合亚洲| 亚洲人永久免费| 黄色资源网久久资源365| 欧美丝袜第一区| 欧美/亚洲一区| 久久久久久**毛片大全| 亚洲一区二区在线看| 最近中文字幕日韩精品| 久久综合999| 久久精品国产一区二区三| 亚洲一二三区在线观看| 亚洲剧情一区二区| 亚洲高清免费| 精品999日本| 国产一区美女| 国产偷国产偷亚洲高清97cao| 欧美婷婷在线| 欧美美女操人视频| 欧美精品系列| 亚洲视频在线二区| 猛干欧美女孩| 久久精品国产第一区二区三区| 亚洲视屏一区| 一本大道av伊人久久综合| 亚洲精品视频免费在线观看| 黄色综合网站| 黄色在线一区| 亚洲电影免费观看高清| 激情久久久久久| 激情av一区二区| 在线播放视频一区| 亚洲第一黄网| 亚洲人成高清| 99这里只有久久精品视频| 亚洲精品小视频在线观看| 亚洲精品国产品国语在线app| 亚洲欧洲一区二区三区久久| 亚洲高清不卡一区| 亚洲精品久久久一区二区三区| 亚洲国产精品精华液网站| 91久久久一线二线三线品牌| 亚洲精品一区在线观看| 亚洲最新中文字幕| 亚洲中午字幕| 亚洲欧美成人一区二区在线电影| 午夜精品一区二区三区电影天堂 | 亚洲欧美怡红院| 欧美一区观看| 免费精品视频|