線性時間排序:計數排序、計數排序、桶排序

計數排序:排序

對於比較密集的整數,好比全校學生的成績(0-100),直接放入101個桶(計數器),設置桶寬爲1便可,穩定排序。數據

基數排序:時間

對於已知長度的整數,好比三位數,能夠先排序個位數,而後十位數,而後百位數(不是從上往下排),穩定排序。

桶排序:

對於[0,1),這樣的double型均勻分佈,能夠採用桶排序,桶內採用快排等其餘排序思路,穩定排序。

 

題目:從100G個32位int數據裏取出中位數

解答:32無符號int最多隻能表示4G的數據,所以能夠劃出1M個桶,每一個桶寬度爲4K,讀入數據,對每一個桶進行計數排序(須要用long類型計數),找到中位桶,以及中位數在其的位置,而後對中位桶進行計數排序便可,需兩趟讀取,時間複雜度2N。

相關文章
相關標籤/搜索