陣列計數排序,類似於桶排序小問題

2021-06-13 04:06:13 字數 1112 閱讀 6736

題目描述:公司現在要對所有員工的年齡進行排序,因為公司員工的人數非常多,所以要求排序演算法的效率要非常高,你能寫出這樣的程式嗎?

輸入:輸入可能包含多個測試樣例,對於每個測試案例,

輸入的第一行為乙個整數n(1<= n<=1000000):代表公司內員工的人數。

輸入的第二行包括n個整數:代表公司內每個員工的年齡。其中,員工年齡age的取值範圍為(1<=age<=99)。

輸出:對應每個測試案例,

請輸出排序後的n個員工的年齡,每個年齡後面有乙個空格。

樣例輸入:

5
43 24 12 57 45
樣例輸出:

12 24 43 45 57
**ac:

思想:使用陣列 int age[99] ,類似於 桶排序 的思想,掃瞄年齡,陣列計數,然後再輸出。

[cpp]view plain

copy

print?

#include 

#include 

intmain()  

, tmp;  

// 依然是記錄型的題目!^_^ 

long

intn, i, cou, j;  

while

( scanf(

"%ld"

, &n) != eof )  

cou = 0;  

for( i = 0; i 

if( cou == n )  

// 無需再繼續,所有人已掃瞄到!

}  }  printf("\n"

);  

}  return

0;  

}   這個就是簡單的桶排序。因為一般情況下:桶排序是乙個指標陣列,即指標指向鍊錶。這個鍊錶就是所謂的桶。

下圖就是桶排序的基本思想:

桶排序一般應用於海量資料中的應用。

桶排序簡述(區別於計數排序)

桶排序可用於最大最小值相差較大的資料情況,比如 9012,19702,39867,68957,83556,102456 但桶排序要求資料的分布必須均勻,否則可能導致資料都集中到乙個桶中。比如 104,150,123,132,20000 這種資料會導致前4個數都集中到同乙個桶中。導致桶排序失效。對於乙...

桶排序和計數排序

桶排序和計數排序 桶排序 bucket sort 或所謂的 箱排序,是乙個 排序演算法 工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的 排序演算法 或是以遞迴方式繼續使用桶排序進行排序 桶排序是 鴿巢排序 的一種歸納結果。當要被排序的陣列內的數值是均勻分配的時候,桶排序...

排序演算法 桶排序和計數排序

桶排序 bucket sort 或所謂的箱排序,也是一種排序演算法。其工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 桶排序是鴿巢排序的一種歸納結果。當要被排序的陣列內的數值是均勻分配的時候,桶排序使用線性時間 n 但桶排序...