Top K算法的實現

1. 選擇排序

每次選出最大的一個,共K次。

複雜度:n + (n-1) + .. + (n-k+1) = (2n-k+1)*k/2 = o(kn)

冒泡跟歸併排序類似

2. 快速排序

每次都採用快排的方法進行劃分,之後迭代的出力Top K所屬的那一部分,直到找到爲止。

複雜度:

最好情況:n + n/2 + ... = 2n

最壞情況:o(kn)

桶排序/基排序類似

3. 堆排序

先把前K個組成最小堆,然後對剩下的每一個進行堆排序,剩下的K個即爲TOP K。

複雜度: k + (n-k)*logk

另外需要考慮的是空間複雜度。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章