JS 實現 使用堆實現Top K 算法
- 使用堆算法實現Top,時間復雜度為 O(LogN)
function top(arr,comp){
if(arr.length == 0){return ;}
var i = arr.length / 2 | 0 ;
for(;i >= 0; i--){
if(comp(arr[i], arr[i 2])){exch(arr, i, i2);}
if(comp(arr[i], arr[i 2 + 1])) {exch(arr, i, i2 + 1);}
}
return arr[0];
}
function exch(arr,i,j){
var t = arr[i];
arr[i] = arr[j];
arr[j] = t;
} </pre>
2. 調用K次堆實現,時間復雜度為 O(K * LogN)
function topK(arr,n,comp){
if(!arr || arr.length == 0 || n <=0 || n > arr.length){
return -1;
}var ret = new Array(); for(var i = 0;i < n; i++){ var max = top(arr,comp); ret.push(max); arr.splice(0,1); } return ret; } </pre>
3.測試var ret = topK(new Array(16,22,91,0,51,44,23),3,function (a,b){return a < b;}); console.log(ret);
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!