time limit: 100ms memory limit: 65536k
根據人口普查結果,知道目前淄博市大約500萬人口,你的任務是幫助人口普查辦公室按年齡遞增的順序輸出每個年齡有多少人,其中不滿1周歲的按0歲計算,1到2周歲的按1歲計算,依次類推,大於等於100歲的老人全部按100歲計算。
輸入第一行給出乙個正整數n(<=5000000),隨後連續給出n個整數表示每個人的年齡,數字間以空格分隔。
按年齡遞增的順序輸出每個年齡的人口數,人口數為0的不輸出,每個年齡佔一行,數字間以乙個空格分隔,行末不得有多餘空格或空行。
1016 71 17 16 18 18 19 18 19 20
16 2桶排序:17 1
18 3
19 2
20 1
71 1
補充說明三點
1,桶排序是穩定的
2,桶排序是常見排序裡最快的一種,比快排還要快…大多數情況下
3,桶排序非常快,但是同時也非常耗空間,基本上是最耗空間的一種排序演算法
我自己的理解哈,可能與網上說的有一些出入,大體都是同樣的原理
無序陣列有個要求,就是成員隸屬於固定
(有限的
)的區間,如範圍為[0-9](考試分數為1-100等)
例如待排數字[6 2 4 1 5 9]
準備10個空桶,最大數個空桶
[6 2 4 1 5 9] 待排陣列
[0 0 0 0 0 0 0 0 0 0] 空桶
[0 1 2 3 4 5 6 7 8 9] 桶編號(實際不存在)
1,順序從待排陣列中取出數字,首先6被取出,然後把6入6號桶,這個過程類似這樣:空桶[ 待排陣列[ 0 ] ] = 待排陣列[ 0 ]
[6 2 4 1 5 9] 待排陣列
[0 0 0 0 0 0 6 0 0 0] 空桶
[0 1 2 3 4 5 6 7 8 9] 桶編號(實際不存在)
2,順序從待排陣列中取出下乙個數字,此時2被取出,將其放入2號桶,是幾就放幾號桶
[6 2 4 1 5 9] 待排陣列
[0 0 2 0 0 0 6 0 0 0] 空桶
[0 1 2 3 4 5 6 7 8 9] 桶編號(實際不存在)
3,4,5,6省略,過程一樣,全部入桶後變成下邊這樣
[6 2 4 1 5 9] 待排陣列
[0 1 2 0 4 5 6 0 0 9] 空桶
[0 1 2 3 4 5 6 7 8 9] 桶編號(實際不存在)
0表示空桶,跳過,順序取出即可:1 2 4 5 6 9
資料結構實驗之排序三 bucket sort
time limit 100ms memory limit 65536k 有疑問?點這裡 根據人口普查結果,知道目前淄博市大約500萬人口,你的任務是幫助人口普查辦公室按年齡遞增的順序輸出每個年齡有多少人,其中不滿1周歲的按0歲計算,1到2周歲的按1歲計算,依次類推,大於等於100歲的老人全部按10...
資料結構實驗之排序三 bucket sort
time limit 100ms memory limit 65536k 有疑問?點這裡 根據人口普查結果,知道目前淄博市大約500萬人口,你的任務是幫助人口普查辦公室按年齡遞增的順序輸出每個年齡有多少人,其中不滿1周歲的按0歲計算,1到2周歲的按1歲計算,依次類推,大於等於100歲的老人全部按10...
資料結構實驗之排序三 bucket sort
根據人口普查結果,知道目前淄博市大約500萬人口,你的任務是幫助人口普查辦公室按年齡遞增的順序輸出每個年齡有多少人,其中不滿1周歲的按0歲計算,1到2周歲的按1歲計算,依次類推,大於等於100歲的老人全部按100歲計算。輸入第一行給出乙個正整數n 5000000 隨後連續給出n個整數表示每個人的年齡...