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

面對(duì)現(xiàn)實(shí),超越自己
逆水行舟,不進(jìn)則退
posts - 269,comments - 32,trackbacks - 0
算法介紹
  計(jì)數(shù)排序是一個(gè)類似于桶排序的排序算法,其優(yōu)勢(shì)是對(duì)已知數(shù)量范圍的數(shù)組進(jìn)行排序。它創(chuàng)建一個(gè)長度為這個(gè)數(shù)據(jù)范圍的數(shù)組C,C中每個(gè)元素記錄要排序數(shù)組中對(duì)應(yīng)記錄的出現(xiàn)個(gè)數(shù)。這個(gè)算法于1954年由 Harold H. Seward 提出。     

      當(dāng)輸入的元素是 n 個(gè) 0 到 k 之間的整數(shù)時(shí),它的運(yùn)行時(shí)間是 Θ(n + k)。計(jì)數(shù)排序不是比較排序,排序的速度快于任何比較排序算法。

由于用來計(jì)數(shù)的數(shù)組C的長度取決于待排序數(shù)組中數(shù)據(jù)的范圍(等于待排序數(shù)組的最大值與最小值的差加上1),這使得計(jì)數(shù)排序?qū)τ跀?shù)據(jù)范圍很大的數(shù)組,需要大量時(shí)間和內(nèi)存。例如:計(jì)數(shù)排序是用來排序0到100之間的數(shù)字的最好的算法,但是它不適合按字母順序排序人名。但是,計(jì)數(shù)排序可以用在基數(shù)排序中的算法來排序數(shù)據(jù)范圍很大的數(shù)組。計(jì)數(shù)排序之所以能夠突破前面所述的Ω(nlgn)極限,是因?yàn)樗皇腔谠乇容^的。計(jì)數(shù)排序適合所需排序的數(shù)組元素取值范圍不大的情況(范圍太大的話輔助空間很大)。

定理:任意一個(gè)比較排序算法在最壞情況下,都需要做Ω(nlgn)次比較。


算法的步驟如下:

  • 找出待排序的數(shù)組中最大和最小的元素
  • 統(tǒng)計(jì)數(shù)組中每個(gè)值為i元素出現(xiàn)的次數(shù),存入數(shù)組C的第i項(xiàng)
  • 對(duì)所有的計(jì)數(shù)累加(從C中的第一個(gè)元素開始,每一項(xiàng)和前一項(xiàng)相加)
  • 反向填充目標(biāo)數(shù)組:將每個(gè)元素i放在新數(shù)組的第C(i)項(xiàng),每放一個(gè)元素就將C(i)減去1

以下引自麻省理工學(xué)院算法導(dǎo)論——筆記:

Counting sort: No comparisons between elements.
• Input: A[1 . . n], where A[ j]??{1, 2, …, k} .
• Output: B[1 . . n], sorted.
• Auxiliary storage: C[1 . . k] .

Counting sort
for i  ← 1 to k
do C[i]  ← 0
for j  ←1 to n
do C[A[ j]]  ← C[A[ j]] + 1   —> C[i] = |{key = i}|
for i  ← 2 to k
do C[i]  ← C[i] + C[i–1]        —>C[i] = |{key  ← i}|
for j  ← n downto 1
do B[C[A[ j]]]  ← A[ j]
C[A[ j]]  ← C[A[ j]] – 1

實(shí)例:


對(duì)所有的計(jì)數(shù)累加(從C中的第一個(gè)元素開始,每一項(xiàng)和前一項(xiàng)相加)



反向填充目標(biāo)數(shù)組:將每個(gè)元素i放在新數(shù)組的第C(i)項(xiàng),每放一個(gè)元素就將C(i)減去1






注:基于比較的排序算法的最佳平均時(shí)間復(fù)雜度為 O(nlogn)
     穩(wěn)定性:算法是穩(wěn)定的。


如果k小于nlogn可以用計(jì)數(shù)排序,如果k大于nlogn可以用歸并排序。


代碼實(shí)例:

 1 C++實(shí)現(xiàn):
 2 #include<cstdio>
 3 #include<algorithm>
 4 using namespace std;
 5 //n為數(shù)組元素個(gè)數(shù),k是最大的那個(gè)元素
 6 void CountingSort(int *input, int size, int k){
 7 int i;
 8 int *result = new int[size]; //開辟一個(gè)保存結(jié)果的臨時(shí)數(shù)組
 9 int *count = new int[k+1]; //開辟一個(gè)臨時(shí)數(shù)組
10 for(i=0; i<=k; ++i)
11 count[i]=0;
12 //使count[i]等于等于i的元素的個(gè)數(shù)
13 for(i=0; i<size; ++i)
14 ++count[input[i]]; //count數(shù)組中坐標(biāo)為元素input[i]的增加1,即該元素出現(xiàn)的次數(shù)加1
15 for(i=1; i<=k; ++i)
16 count[i] += count[i-1];
17 for(i=size-1; i>=0--i){ //正序來也行,但是到這來可以使排序是穩(wěn)定的
18 --count[input[i]]; //因?yàn)閿?shù)組下標(biāo)從0開始,所以這個(gè)放在前面
19 result[count[input[i]]] = input[i]; //這個(gè)比較繞, count[input[i]-1] 就代表小于等于元素
    }  
20 copy(result,result+size,input); //調(diào)用copy函數(shù)把結(jié)果存回原數(shù)組
21 delete [] result; //記得釋放空間
22 delete [] count;
23 }
24 int main()
25 {
26 int input[11]={2,7,4,9,8,5,7,8,2,0,7};
27 CountingSort(input,11,9);
28 for(int i=0; i<11++i)
29 printf("%d ",input[i]);
30 putchar('\n');
31 return 0;
32 }

 

posted on 2012-11-13 11:07 王海光 閱讀(729) 評(píng)論(1)  編輯 收藏 引用 所屬分類: 算法

FeedBack:
# re: 算法導(dǎo)論——計(jì)數(shù)排序(網(wǎng)易公開課)[未登錄]
2012-11-14 09:24 | 春秋十二月
我對(duì)此略有研究,但有所變化和改進(jìn),詳見http://www.shnenglu.com/qinqing1984/archive/2012/05/31/176784.html  回復(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>
            欧美高清视频一区二区| 欧美激情一区二区三区全黄| 久久久久久久精| 一区二区三区不卡视频在线观看| 午夜视频一区| 韩国三级在线一区| 欧美大片第1页| 欧美日韩精品一二三区| 亚洲图片在线观看| 销魂美女一区二区三区视频在线| 国产精品五月天| 狠狠色丁香久久婷婷综合_中| 亚洲精品乱码久久久久久| 亚洲第一网站| 欧美日韩一区二区三区四区五区| 亚洲免费电影在线| 亚洲午夜精品一区二区三区他趣| 国产精品亚洲美女av网站| 麻豆国产精品一区二区三区| 欧美福利电影网| 欧美在线free| 欧美色视频在线| 欧美激情bt| 亚洲精品日产精品乱码不卡| 亚洲欧美日韩精品久久亚洲区| 精品96久久久久久中文字幕无| 亚洲激情黄色| 韩国视频理论视频久久| 日韩午夜免费| 日韩系列欧美系列| 欧美粗暴jizz性欧美20| 久久在线精品| 国产午夜精品全部视频播放| 国产精品99久久久久久久久| 亚洲精品久久视频| 欧美精品一区二区三区视频| 乱人伦精品视频在线观看| 亚洲人成毛片在线播放女女| 国产精品男gay被猛男狂揉视频| 亚洲精品美女91| 久久综合网hezyo| 欧美成人免费在线视频| 亚洲国产另类久久精品| 久久久91精品国产一区二区三区 | 国产欧美日韩精品专区| 在线天堂一区av电影| 午夜精品免费视频| 国产精品一区二区三区观看| 亚洲免费在线观看| 久久视频在线免费观看| 亚洲国产欧美国产综合一区| 蜜臀91精品一区二区三区| 亚洲级视频在线观看免费1级| 99亚洲精品| 国产日产亚洲精品系列| 久久精品国产免费| 亚洲国产aⅴ天堂久久| 99精品视频免费全部在线| 国产精品成人观看视频国产奇米| 日韩午夜激情av| 鲁鲁狠狠狠7777一区二区| av成人免费| 国产在线精品成人一区二区三区| 开元免费观看欧美电视剧网站| 日韩一级成人av| 麻豆九一精品爱看视频在线观看免费| 亚洲精品国产精品国自产在线| 国产女主播在线一区二区| 欧美~级网站不卡| 久久精品最新地址| 亚洲欧美精品一区| 一本一本久久a久久精品综合妖精| 久久全国免费视频| 欧美一区国产在线| 欧美一区二区在线观看| 亚洲欧美国产制服动漫| 亚洲美女性视频| 亚洲国产欧美一区二区三区丁香婷| 国产麻豆日韩| 国产欧美日韩综合一区在线播放| 欧美日韩精品免费观看| 欧美极品影院| 亚洲欧美国内爽妇网| 亚洲精品中文字幕女同| 亚洲精品美女在线观看| 亚洲国产成人精品女人久久久| 老司机午夜精品视频在线观看| 欧美在线视频网站| 男人的天堂亚洲| 亚洲三级性片| 在线中文字幕一区| 久久精品国产综合精品| 欧美成人国产一区二区| 欧美日韩精品免费| 国产一区二区三区成人欧美日韩在线观看 | 一本到12不卡视频在线dvd| 亚洲人午夜精品| 午夜影视日本亚洲欧洲精品| 久久综合亚州| 国产欧美日韩视频一区二区三区| 精品成人免费| 新片速递亚洲合集欧美合集| 亚洲第一区在线观看| 午夜精品短视频| 欧美日韩黄色一区二区| 国语自产精品视频在线看抢先版结局 | 久久久久久亚洲精品杨幂换脸| 亚洲国产精品成人va在线观看| 亚洲视频在线观看免费| 欧美黄色视屏| 91久久久久| 欧美激情成人在线视频| 亚洲欧美日韩精品久久久久| 欧美激情一区二区三区全黄 | 亚洲一区二区三区四区中文| 欧美看片网站| 精品成人免费| 午夜精品视频| 性做久久久久久久久| 亚洲精品一区二区在线观看| 欧美不卡三区| 一二三区精品| 一本一本a久久| 欧美激情中文不卡| 午夜伦理片一区| 亚洲视频专区在线| 亚洲国产精品视频| 在线日韩欧美| 亚洲午夜激情免费视频| 久久青草久久| 亚洲精品乱码久久久久久按摩观 | 欧美中文在线视频| 91久久线看在观草草青青| 午夜精品久久久久久久99樱桃| 亚洲伦理在线| 国产一本一道久久香蕉| 欧美成人高清| 国产精品美女久久久| 免费一级欧美在线大片| 欧美片在线观看| 性欧美超级视频| 女人香蕉久久**毛片精品| 亚洲欧美精品中文字幕在线| 久久久久久久激情视频| 亚洲综合电影一区二区三区| 久久久精品日韩欧美| 免播放器亚洲一区| 国产精品成人观看视频国产奇米| 精品动漫3d一区二区三区免费| 亚洲调教视频在线观看| 激情成人亚洲| 欧美激情国产日韩| 欧美黑人多人双交| 国产一区视频观看| 亚洲欧洲精品成人久久奇米网| 免费影视亚洲| 久久久精品国产99久久精品芒果| 欧美欧美在线| 亚洲国产日韩一级| 亚洲国产另类精品专区| 国产中文一区二区| 欧美一区二区在线看| 欧美亚洲视频在线观看| 欧美日韩人人澡狠狠躁视频| 亚洲电影网站| 一区二区三区不卡视频在线观看| 女生裸体视频一区二区三区| 麻豆精品视频| 亚洲人午夜精品免费| 欧美11—12娇小xxxx| 亚洲啪啪91| 亚洲视频在线播放| 国产毛片久久| 久久这里只有| 亚洲国产另类久久精品| 一区二区冒白浆视频| 国产日韩精品一区二区浪潮av| 亚洲自拍三区| 欧美黑人一区二区三区| 99re66热这里只有精品4| 欧美日韩人人澡狠狠躁视频| 亚洲私人影院| 欧美国产精品中文字幕| 中日韩男男gay无套| 一区免费在线| 另类尿喷潮videofree | 亚洲国产成人不卡| 欧美一区二区三区婷婷月色 | 在线观看国产精品淫| 久久婷婷一区| 一区二区高清在线| 欧美激情1区2区3区| 欧美一区二区啪啪| 亚洲精选在线| 亚洲激情在线观看视频免费| 国产午夜久久| 国产欧美日韩中文字幕在线| 欧美女人交a| 欧美日韩视频一区二区三区| 欧美成人小视频|