【劍指offer】員工年齡排序
轉載請註明出處:http://blog.csdn.net/ns_code/article/details/25144793
對公司所有員工的年齡進行排序,公司總共有幾萬名員工,要求時間複雜度為O(n)。
很明顯的計數排序題目,員工的年齡肯定在一個範圍之內,我們這裡假設在0-99之內,算很大了,這樣就可以開闢一個長度為100的陣列,儲存各個年齡的員工的個數。
程式碼如下:
/*
員工年齡排序,主要用計數排序的思想,
時間複雜度為O(n),需要固定大小的額外輔助空間
*/
#include<stdio.h>
#include<string.h>
/*
計數排序,員工年齡肯定在0-99之間
*/
void SortAge(int ages[],int len)
{
if(ages == NULL || len<1)
return ;
int timesOfAge[100];
memset(timesOfAge,0,sizeof(timesOfAge));
int i;
//計算每個年齡員工的個數
for(i=0;i<len;i++)
{
if(ages[i]<=99 && ages[i]>=0)
timesOfAge[ages[i]]++;
}
//對ages進行排序
int index = 0;
for(i=0;i<100;i++)
{
int j = 0;
while(j<timesOfAge[i])
{
ages[index++] = i;
j++;
}
}
}
int main()
{
int ages[] = {33,34,45,24,36,23,21,22,19,26,45,34,21,34,34,33,52,22,32,25,27,43,22,21,20,33,26,27,15,29};
int len = 30;
SortAge(ages,len);
int i;
for(i=0;i<len;i++)
printf("%d ",ages[i]);
printf("\n");
return 0;
}
測試結果:
演算法準備放一放了,馬上就要開題了,居然一點緊張感都沒有,論文方向是搞視訊異常檢測的,還是有點小難度的,導師雖然是所謂的國家有突出貢獻科學家,但是依然不管不問,畢竟這麼大把年紀了,也可以理解,萬事還是要靠自己!
漸漸從實習生招聘的陰影中走出來了,其實也就面了兩家公司而已。開題後要轉移重點了,做了些Android專案,但是掌握比較深入的卻在jvm和java併發機制,Android平臺相關的技術掌握的比較皮毛,接下來要加深對網路協議,java網路程式設計和Android平臺的學習,再做個比較好點的專案,完善下之前的專案,總感覺自己的專案拿不出手,而且又不太會吹,哎!!再接再厲吧!校招前要做好充分的準備,放手一搏。。。
相關文章
- 所有員工的年齡排序《演算法很美》排序演算法
- 劍指offer-JavaScript版JavaScript
- 【劍指offer】左旋轉字串字串
- 【劍指offer】字串的排列字串
- 劍指Offer題解合集
- 劍指offer面試17 合併兩個排序的連結串列面試排序
- 【劍指offer】數字在排序陣列中出現的次數排序陣列
- 劍指 offer(1) -- 陣列篇陣列
- Leetcode劍指offer(八)LeetCode
- 【劍指offer】【2】字串的空格字串
- 【劍指offer】字串轉整數字串
- 【劍指offer】字串的組合字串
- 劍指offer刷題記錄
- 《劍指offer》:[38]數字在排序陣列中出現的次數排序陣列
- 《劍指 Offer》棧實現佇列佇列
- 劍指offer解析-下(Java實現)Java
- 劍指offer解析-上(Java實現)Java
- 劍指 Offer 38. 字串的排列字串
- 劍指Offer 表示數值的字串字串
- 劍指offer——重建二叉樹二叉樹
- 【劍指offer】樹的子結構
- 【劍指offer】二叉樹深度二叉樹
- 劍指Offer-39-數字在排序陣列中出現的次數排序陣列
- 第三章:查詢與排序(下)----------- 3.27 用計數排序解決員工年齡問題排序
- 劍指offer(四)重建二叉樹二叉樹
- mysql 索引十連問| 劍指 offer - mysqlMySql索引
- 劍指offer之順序列印陣列陣列
- 劍指offer——包含min函式的棧函式
- 劍指offer-字串空格替換為“ ”字串
- 《劍指offer》:[54]表示數值的字串字串
- 《劍指offer》:[42-1]左旋轉字串字串
- 【劍指offer】陣列中的逆序對陣列
- 【劍指offer】調整陣列順序陣列
- 【劍指offer】順時針列印矩陣矩陣
- 【劍指offer】包含min函式的棧函式
- 【劍指offer】替換字串中的空格字串
- 劍指 Offer 25. 合併兩個排序的連結串列 JavaScript實現排序JavaScript
- 劍指Offer系列刷題筆記彙總筆記