n名員工的工齡,要求按工齡增序輸出每個工齡段有多少員工。
n(≤),即員工總人數;隨後給出
n個整數,即每個員工的工齡,範圍在[0, 50]。
8
10 2 0 5 7 2 5 2
0:1
2:35:2
7:110:1
這道題目比較簡單,最快捷的方法就是利用桶排序,建立工齡從小到大的計數陣列,陣列下表即代表工齡,陣列內容初始化為0,輸入工齡時,對應下標的陣列內容加1,最後輸出時將不為0的數輸出即可。c++**入下:
#include #include #define maxage 51
using namespace std;
int main()
; for (int i = 0; i < n; i++)
for (int i = 0; i < maxage; i++)
if (count[i])
cout << i << ":" << count[i] << endl;
return 0;
}
桶排序測試結果:
除了桶排序以外,我們還可以利用排序函式將輸入的工齡從小到大排序,輸出時只需要觀察輸出的數(工齡)與其下一位數是否相等,如果相等則繼續尋找下乙個數,同時count++,直到下乙個數與其不相等,則按要求輸出,c++**如下:
int main()
else
count++;
} cout << age[j] << ":" << count << endl;
delete age;
return 0;
}
排序函式測試結果:
可以對比出還是桶排序在此類問題中比較快,占用記憶體較小。
10 排序4 統計工齡 20 分
給定公司n名員工的工齡,要求按工齡增序輸出每個工齡段有多少員工。輸入格式 輸入首先給出正整數n 10 5 即員工總人數 隨後給出n個整數,即每個員工的工齡,範圍在 0,50 輸出格式 按工齡的遞增順序輸出每個工齡的員工個數,格式為 工齡 人數 每項佔一行。如果人數為0則不輸出該項。輸入樣例 810 ...
10 排序4 統計工齡 20 分
給定公司n名員工的工齡,要求按工齡增序輸出每個工齡段有多少員工。輸入首先給出正整數n 10 5 即員工總人數 隨後給出n個整數,即每個員工的工齡,範圍在 0,50 按工齡的遞增順序輸出每個工齡的員工個數,格式為 工齡 人數 每項佔一行。如果人數為0則不輸出該項。8 10 2 0 5 7 2 5 20...
10 排序4 統計工齡 20 分
給定公司n名員工的工齡,要求按工齡增序輸出每個工齡段有多少員工。輸入首先給出正整數n 即員工總人數 隨後給出n個整數,即每個員工的工齡,範圍在 0,50 按工齡的遞增順序輸出每個工齡的員工個數,格式為 工齡 人數 每項佔一行。如果人數為0則不輸出該項。8 10 2 0 5 7 2 5 20 1 2 ...