題目:對公司所有員工年齡進行排序。公司有大約幾萬名的員工,要求時間複雜度在o(n)內,可以借助常數項的輔助空間。
**:
public static void sortages(int ages)
int length = ages.length;
int timesofage = new int[99 + 1];
// 掃瞄整個有效範圍的陣列,統計每個年齡出現的次數
for (int i = 0; i < length; i++)
int age = ages[i];
++timesofage[age];//自增年齡出現的次數
} int index = 0;//定義乙個自增索引用於記錄ages中的游標
for (int i = 0; i < timesofage.length; i++)
}}
模擬公司人員年齡的函式:
public static int getages(int length)
int ages = new int[length];
for(int i=0;i分析:人員的年齡姑且可以設定乙個泛微[0-99](當然可以自己更改),我們可以遍歷原年齡陣列統計每乙個年齡在各個點出現的次數,我們將各個點出現的次數放在乙個輔助空間timesofages中,然後遍歷timesofages該輔助空間的索引即是年齡,該索引處的值即是連續出現的次數。時間複雜度分析:o(n) +常數*o(n)=o(n);
統計公司某個年齡出現的次數亦可借助上述方式實現。
劍指offer 年齡排序問題)
公司現在要對所有員工的年齡進行排序,因為公司員工的人數非常多,所以要求排序演算法的效率要非常高,要求時間複雜度為o n 使用桶排序 例子 首先出場的我們的主人公小哼,上面這個可愛的娃就是啦。期末考試完了老師要將同學們的分數按照從高到低排序。小哼的班上只有5個同學,這5個同學分別考了5分 3分 5分 ...
劍指offer 員工年齡排序
典型的以空間換時間問題,思路非常重要!員工年齡排序 員工可能有幾萬名,要求時間複雜度為o n 思路 員工的年齡必定在乙個範圍內,比方0 99,那麼我們建立乙個大小為100的輔助陣列,然後遍歷 員工年齡,取到乙個年齡就將該年齡相應陣列位置的值加1,終於陣列中便儲存了不同年齡的員工的個數 最後,列印陣列...
演算法 劍指offer 快排
快排 緊記快排模板,partition fastsort int fastsort int arr,int l,int r return arr int partition int arr,int l,int r arr l tmp return l 輸入乙個非負整數陣列,把陣列裡所有數字拼接起來排...