全局排序,取前K個數組
局部排序,只排序K個數,冒泡spa
堆,TopK個數也不排序了,最小堆排序
隨機選擇 + partition 遞歸
分治法,每一個分支「都要」遞歸,例如:快速排序,O(n*lg(n))內存
減治法,「只要」遞歸一個分支,例如:二分查找O(lg(n)),隨機選擇O(n)it
n&(n-1):io
x = 1011 0000class
x-1= 1010 1111di
x & (x-1) = 1010 0000while
因而,n&(n-1)這個操做,能夠起到「消除最後一個1」的功效。.
僞代碼:
while(n){
result++;
n&=(n-1); // 每次消除一個1,最終爲0
}