下面介紹一種在O(n)的時(shí)間內(nèi)找出第k個(gè)最大值(最小值)的方法 該方法和快速排序相似。不同在于每次只出理一邊。 偽代碼如下: Random-select(A,p,r,i)//找到A中的第i個(gè)最小值 if p==r then return a[p] q = random-partition(A,p,r) k = p-q+1 if(i==k) then return A[q] else if i<k then return random-select(A,p,q-1,i) else return random-select(A,q+1,r,i-k) 這個(gè)算法很不錯(cuò)。