典型的以空間換時間問題,思路非常重要!
/*
員工年齡排序
員工可能有幾萬名,要求時間複雜度為o(n)
思路:員工的年齡必定在乙個範圍內,比方0-99,那麼我們建立乙個大小為100的輔助陣列,然後遍歷
員工年齡,取到乙個年齡就將該年齡相應陣列位置的值加1,終於陣列中便儲存了不同年齡的員工的個數
最後,列印陣列就可以。
by rowandjj
2014/7/22
*/#includeusing namespace std;
#define max 100
void sort(int ages,int len)
//遍歷年齡陣列,獲取不同年齡的員工個數存到輔助陣列中
for(i = 0;i < len; i++)
//對年齡陣列排序
int index = 0;
for(i = 0; i < max; i++) }
}int main()
; sort(ages,25);
for(int i = 0; i < 25; i++)
{ cout測試:
劍指offer 年齡排序問題)
公司現在要對所有員工的年齡進行排序,因為公司員工的人數非常多,所以要求排序演算法的效率要非常高,要求時間複雜度為o n 使用桶排序 例子 首先出場的我們的主人公小哼,上面這個可愛的娃就是啦。期末考試完了老師要將同學們的分數按照從高到低排序。小哼的班上只有5個同學,這5個同學分別考了5分 3分 5分 ...
劍指Offer 對公司人員年齡進行排序
題目 對公司所有員工年齡進行排序。公司有大約幾萬名的員工,要求時間複雜度在o n 內,可以借助常數項的輔助空間。public static void sortages int ages int length ages.length int timesofage new int 99 1 掃瞄整個有效...
《劍指offer》 排序
一 資料流中的中位數 題目描述 如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。我們使用insert 方法讀取資料流,使用getmedian 方法獲取當前讀取資料...