基於快速排序的TOPK演算法

2021-06-06 20:11:03 字數 395 閱讀 5044

類似於快速排序,首先選擇乙個劃分元,如果這個劃分元的序號index剛好等於k,那麼這個劃分元以及左邊的數,剛好組成了top-k small data;如果index>k, 那top-k small data在index的左邊,那麼就繼續遞迴從index-1和數中選取top-k.如果index < k,那麼說明還要從index的右邊,選取top-(k-index) small data.

**如下:

public class topk_quick 

} return index;

} public static void main(string args)

; if(k>0&&k<=a.length-1)

else

}}

Top K問題 基於快速排序

p為待查詢陣列,l,r分別為陣列下標,k表示第k大數 public intfindkth int p,int l,int r,int k 一次快速排序 以p l 為比較物件,比p l 大或等於的在其左邊,否則在其右邊 public intquicksort int p int l,int r whi...

演算法思考 topk問題堆排序 快速排序比較

快速排序求解 這種演算法利用了快速排序的主要思想 每次呼叫快速排序的partition函式後將會得出乙個數n的最終位置,比較n及其右邊所有數的總個數與目標個數k 若大於k,則對數n右邊的數構成的陣列呼叫partition函式 若等於k,則說明n及其右邊的數就是我們想要得到的那k個數,排序結束 若小於...

基於快速排序的O(N)時間複雜度的TopK演算法原理

實際應用中,我們經常面臨這樣的問題,即從乙個序列s中選擇其中最大的k個數 一般情況下k遠小於 s 我們將這種問題稱為topk問題。諸如此類的應用場景很多,本文借助快速排序的思想,給出解決此問題的乙個時間複雜度為o n 的演算法。為了引出本文基於快排topk的思想,先給出快排的演算法描述,令s為待排序...