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

CodeBeauty
春暖花開
posts - 6,comments - 3,trackbacks - 0

經(jīng)典排序算法-計數(shù)排序CountSort
注意與基數(shù)排序區(qū)分,這是兩個不同的排序

計數(shù)排序的過程類似小學選班干部的過程,如某某人10票,作者9票,那某某人是班長,作者是副班長

大體分兩部分,第一部分是拉選票和投票,第二部分是根據(jù)你的票數(shù)入桶

看下具體的過程,一共需要三個數(shù)組,分別是待排數(shù)組,票箱數(shù)組,和桶數(shù)組

int *nData= new int[] ; //待排數(shù)組,以{ 6, 2, 4, 1, 5, 9} 為例

int *pCount = new int[Max{nData[i]+1}]; //票箱數(shù)組   ****特別注意pCount的長度問題Max>=nData.Length

int *pSort = new int[Max{nData[i]+1]; //桶數(shù)組

最后再看桶數(shù)組,先看待排數(shù)組和票箱數(shù)組

初始狀態(tài),迭代變量i = 0時,待排數(shù)組[i] = 6,票箱數(shù)組[i] = 0,這樣通過迭代變量建立了數(shù)字與其桶號(即票數(shù))的聯(lián)系

待排數(shù)組[ 6 2 4 1 5 9 ] i = 0時,可以從待排數(shù)組中取出6

票箱數(shù)組[ 0 0 0 0 0 0 ] 同時可以從票箱數(shù)組里取出6的票數(shù)0,即桶號

拉選票的過程

首先6出列開始拉選票,6的票箱是0號,6對其它所有數(shù)字說,誰比我小或與我相等,就給我投票,不然揍你

于是,2 4 1 5 分別給6投票,放入0號票箱,6得四票

待排數(shù)組[ 6 2 4 1 5 9 ]

票箱數(shù)組[ 4 0 0 0 0 0 ]

 

接下來2開始拉選票,對其它人說,誰比我小,誰投我票,不然弄你!于是1投了一票,其他人比2大不搭理,心想你可真二

于是2從1那得到一票

待排數(shù)組[ 6 2 4 1 5 9 ]

票箱數(shù)組[ 4 1 0 0 0 0 ]

 

再然后是,

4得到2和1的投票,共計兩票

1得到0票,沒人投他

5得到2,4,1投的三張票

9是最大,得到所有人(自己除外)的投票,共計5票(數(shù)組長度-1票)

 

投票完畢時的狀態(tài)是這樣

待排數(shù)組[ 6 2 4 1 5 9 ]

票箱數(shù)組[ 4 1 2 0 3 5 ]

入桶的過程

投票過程結(jié)束,每人都擁有自己的票數(shù),桶數(shù)組說,看好你自己的票數(shù),進入與你票數(shù)相等的桶,GO

6共計5票,進入5號桶

2得1票,進入1號桶,有幾票就進幾號桶

4兩票,進2號桶,5三票進3號桶,9有5票,進5號桶

待排數(shù)組[ 6 2 4 1 5 9 ]

票箱數(shù)組[ 4 1 2 0 3 5 ]

-----------------------

入桶前 [ 0 1 2 3 4 5 ] //里邊的數(shù)字表示桶編號

入桶后 [ 1 2 4 5 6 9 ] //1有0票,進的0號桶

排序完畢,順序輸出即可[ 1 2 4 5 6 9]

 

可以看到,數(shù)字越大票數(shù)越多,9得到除自己外的所有人的票,5票,票數(shù)最多所以9最大,

每個人最多擁有[數(shù)組長度減去自己]張票

1票數(shù)最少,所以1是最小的數(shù),

計數(shù)排序同時兼有桶排的高效和快排的霸道,

 

///////////////////////////////////////////////
/*
  一共需要三個數(shù)組,分別是待排數(shù)組nData,票箱數(shù)組(計數(shù)數(shù)組)pCount,和桶數(shù)組(存儲結(jié)果數(shù)組)pSort.
*/

///////////////////////////////////////////////

#include 
<iostream>
using namespace std;

//輸出函數(shù)Output()
bool Output(int b[],int length)
{
    
for (int i=0;i<length;i++)
    
{
        cout
<<b[i]<<"  ";
       }

    cout
<<endl;
    
return true;
  }


//計數(shù)排序核心代碼
int CountSort(int* pData, int nLen)
{
    
//從待排序數(shù)組中找到最大值,以確定動態(tài)數(shù)組的長度,以盡量減少內(nèi)存空間消耗
    int Max=pData[0];
    
for (int i= 1;i<nLen;i++)
    
{
        
if (Max<pData[i])
        
{
            Max
=pData[i];
        }

    }

    Max
++;   //數(shù)組中需要在pCout[Max]中存值,故nLen=max+1
    
//int* pCout = NULL;            //保存記數(shù)數(shù)據(jù)的指針
    
//pCout = (int*)malloc(sizeof(int) * nLen);    //申請空間-C實現(xiàn)
    int* pCout = new int[Max]; //C++實現(xiàn)
    
//初始化記數(shù)為0
    for (i = 0; i < Max; ++i)
    
{
        pCout[i] 
= 0;
    }

    
    
//記錄排序記數(shù)。在排序的值相應記數(shù)加1。
    for (i = 0; i < nLen; i++)
    
{
        pCout[pData[i]]
++;        //
    }

    
    
//確定不比該位置大的數(shù)據(jù)個數(shù)。
    for (i = 1; i < Max; ++i)
    
{
        pCout[i] 
+= pCout[i - 1];    //不比他大的數(shù)據(jù)個數(shù)為他的個數(shù)加上前一個的記數(shù)。
    }

    
    
//int* pSort = NULL;            //保存排序結(jié)果的指針
    
//pSort = (int*)malloc(sizeof(int) * nLen);    //申請空間
    int *pSort=new int[Max];
    
for (i = 0; i < nLen; ++i)
  
{
        
//把數(shù)據(jù)放在指定位置。因為pCout[pData[i]]的值就是不比他大數(shù)據(jù)的個數(shù)。
        
//為什么要先減一,因為pCout[pData[i]]保存的是不比他大數(shù)據(jù)的個數(shù)中包括了
        
//他自己,我的下標是從零開始的!所以要先減一。
        --pCout[pData[i]];    //因為有相同數(shù)據(jù)的可能,所以要把該位置數(shù)據(jù)個數(shù)減一。
        pSort[pCout[pData[i]]] = pData[i];     //保存待排數(shù)組元素          
    }

    
    
//排序結(jié)束,復制到原來數(shù)組中。
    for (i = 0; i < nLen; ++i)
  
{
        pData[i] 
= pSort[i];
    }

    
    
//最后要注意釋放申請的空間。
    
//free(pCout);   //C實現(xiàn)
    
//free(pSort);
    delete pSort;  //C++實現(xiàn)
    delete pCout;

    
return 1;
}


int main()
{
   
// int nData[10] = {8,6,3,6,5,8,3,5,1,0};
    
//動態(tài)輸入待排序數(shù)組
    int size_nData;
    cout
<<"Enter the numble of nData: size_nData=";
    cin
>>size_nData;
    cout
<<endl<<"Enter nData(size_nData values):";
    
int* nData=new int[size_nData];
    
for (int i=0;i<size_nData;i++)
    
{
          cin
>>nData[i];
      }

    
    cout
<<endl<<"former:"<<endl;
    Output(nData,size_nData);
    cout
<<endl<<"later:"<<endl;
    CountSort(nData, size_nData);

    Output(nData,size_nData);
    cout
<<endl;

    delete nData;
    
return 0;
}

改代碼已經(jīng)成功運行過,歡迎大家進一步完善。

posted on 2012-05-09 10:19 代碼之美 閱讀(509) 評論(0)  編輯 收藏 引用 所屬分類: 經(jīng)典排序算法(C/C++實現(xiàn))
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产小视频在线观看| 在线观看欧美精品| 欧美日韩一区二| 美女网站在线免费欧美精品| 亚洲日本免费| 亚洲国产精品成人va在线观看| 国产欧美日韩在线视频| 欧美日韩国产首页在线观看| 久久精品视频免费播放| 亚洲中字在线| 亚洲素人一区二区| 亚洲激情网站免费观看| 亚洲无亚洲人成网站77777| 国产视频在线观看一区二区三区| 欧美高清视频免费观看| 久久影视精品| 久久精品视频导航| 久久夜色精品国产欧美乱极品| 亚洲婷婷在线| 亚洲欧洲日韩综合二区| 国产精品三级视频| 国产精品久久久久秋霞鲁丝 | 亚洲人成人一区二区在线观看| 久久天天躁狠狠躁夜夜爽蜜月 | 欧美大片免费久久精品三p| 久久精品欧美| 亚洲第一免费播放区| 亚洲区一区二| 亚洲一区久久| 久久久精品国产一区二区三区| 久久成人免费电影| 欧美高清视频一区二区| 国产精品电影网站| 国产精品久久久| 狠狠入ady亚洲精品经典电影| 在线精品亚洲| 久久福利资源站| 欧美日韩一区二区三区免费| 韩国一区电影| 亚洲视频免费| 免费国产一区二区| 性做久久久久久免费观看欧美| 玖玖视频精品| 韩国av一区二区三区| 欧美在线观看视频一区二区三区| 麻豆91精品| 午夜精品久久久久久久| 麻豆乱码国产一区二区三区| 国产麻豆9l精品三级站| 久久蜜臀精品av| 国产欧美日韩在线| 欧美在线观看一区二区| 在线亚洲成人| 国产精品豆花视频| 午夜精品网站| 午夜精品久久久久影视| 欧美三级电影网| 亚洲视屏一区| 亚洲综合精品一区二区| 国产精品青草久久| 午夜视频一区在线观看| 亚洲国产激情| 国产精品久久久久aaaa九色| 一区二区久久久久| 亚洲无限av看| 精品成人在线观看| 久久久噜噜噜久久久| 久久亚洲国产成人| 亚洲精选91| 一区二区高清在线| 国产日韩一区| 亚洲高清在线视频| 国产免费亚洲高清| 亚洲国产日韩在线| 欧美不卡一区| 久久成人免费视频| 欧美高清一区二区| 久久精品欧美| 亚洲精品久久久久| 美国十次了思思久久精品导航| 欧美日韩一级大片网址| 午夜国产一区| 欧美日韩国产精品成人| 欧美搞黄网站| 中日韩男男gay无套| 在线亚洲欧美视频| 亚洲精品国产精品乱码不99| 久久精品亚洲| 欧美手机在线视频| 性色av一区二区三区| 99热在线精品观看| 欧美日韩国产美女| 亚洲视频一二区| 欧美国产综合一区二区| 亚洲天堂av综合网| 国产毛片久久| 久久综合导航| 免费成人高清视频| 永久555www成人免费| 久久精品国产一区二区三区免费看| 亚洲午夜一级| 久久综合婷婷| 99视频国产精品免费观看| 亚洲国产成人av在线| 欧美激情免费观看| 亚洲精品一区在线| 亚洲国产99| 欧美女同视频| 亚洲男人av电影| 欧美一区二区在线播放| 国产视频在线观看一区二区| 久久精品亚洲| 亚洲一级二级在线| 国内视频一区| 亚洲激情社区| 国产一区二区精品久久| 噜噜噜91成人网| 久久免费精品视频| 中文精品99久久国产香蕉| 午夜精品久久久久久久99黑人| 亚洲国产精品传媒在线观看 | 欧美日韩一区二区在线| 午夜精品久久| 玖玖国产精品视频| 欧美一区二区三区另类| 美女国产一区| 久久国产精品亚洲77777| 欧美精品在欧美一区二区少妇| 欧美一区二区三区在线视频| 欧美ab在线视频| 久久精品免视看| 欧美日韩免费在线| 久久综合九色99| 国产精品美女久久久久久2018| 模特精品在线| 国产亚洲va综合人人澡精品| 亚洲精选久久| 国产日韩欧美成人| 欧美大片91| 欧美视频三区在线播放| 久久久青草青青国产亚洲免观| 欧美日韩国产高清| 欧美久久九九| 狠狠久久亚洲欧美| 一区二区冒白浆视频| 亚洲国产精品一区二区尤物区 | 亚洲经典三级| 国产真实乱偷精品视频免| 欧美多人爱爱视频网站| 欧美色另类天堂2015| 亚洲国产婷婷| 亚洲国产经典视频| 久久在线视频在线| 久久乐国产精品| 国产精品午夜国产小视频| 日韩午夜在线观看视频| 91久久精品www人人做人人爽 | 一本色道久久加勒比88综合| 亚洲人成久久| 欧美成人69av| 欧美大片在线观看一区| 精品成人一区二区三区四区| 久久精品女人的天堂av| 久久综合久久久| 在线精品亚洲| 欧美成人一区在线| 亚洲国产电影| 一本大道久久精品懂色aⅴ| 快she精品国产999| 亚洲第一综合天堂另类专| 亚洲国产91| 欧美精品久久久久久久免费观看 | 亚洲欧洲一区二区三区久久| 久久综合精品国产一区二区三区| 美女日韩在线中文字幕| **性色生活片久久毛片| 麻豆精品传媒视频| 久久精品视频在线免费观看| 在线成人h网| 欧美www视频| 99re66热这里只有精品3直播| 亚洲在线视频免费观看| 国产欧美一区视频| 久久人人97超碰人人澡爱香蕉| 欧美www在线| 亚洲最新视频在线| 国产精品v日韩精品| 午夜精品亚洲| 欧美国产日韩精品免费观看| 亚洲欧美中日韩| 日韩一区二区精品在线观看| 激情丁香综合| 国产精品一区二区视频| 欧美高清视频www夜色资源网| 欧美在线欧美在线| 亚洲欧美日韩天堂| 亚洲少妇在线| 99视频超级精品| 亚洲精品社区| 亚洲娇小video精品|