劍指Offer 對公司人員年齡進行排序

2021-08-16 01:16:16 字數 768 閱讀 3580

題目:對公司所有員工年齡進行排序。公司有大約幾萬名的員工,要求時間複雜度在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 輸入乙個非負整數陣列,把陣列裡所有數字拼接起來排...