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
另外需要考慮的是空間複雜度。