堆排序尋找第K大的數

2022-09-19 16:27:13 字數 438 閱讀 4315

首先buildheap,build heap是指讓陣列符合堆的性質,最大堆就是根節點的值》=子節點的值。

第一步build完之後,arr[0]就是最大的元素;

然後執行k-1次調整,就會把第k大的元素調整到arr[0]的位置。【要第一大的元素,就不需要再調整了,要第二大就再調整一次,以此類推...】

返回arr[0]即可。

func findkthlargest(arr int, k int) int 

return arr[0]

}func buildheap(arr int)

}func sift(arr int, idx int, size int)

if right < size && arr[right] > arr[largest]

if largest != idx

}

尋找第K大的數

題目描述 要求在n個不重複的整數中,找出第k大的整數 其中0輸入第一行為兩個正整數n k 第二行為n個整數,輸入保證這n個整數兩兩相異,每個整數的範圍在 1000000到1000000之間 輸出輸出第k大的整數值 樣例輸入 5 33 2 4 5 1 樣例輸出 3 如下 include include...

尋找第K大的數

在一堆資料中查詢到第k個大的值。名稱是 設計一組n個數,確定其中第k個最大值,這是乙個選擇問題,解決這個問題的方法很多。所謂 第 前 k大數問題 指的是在長度為n n k 的亂序陣列中s找出從大到小順序的第 前 k個數的問題。解法1 我們可以對這個亂序陣列按照從大到小先行排序,然後取出前k大,總的時...

尋找第k大的數

給定乙個整數陣列arr,同時給定它的大小n和要找的k k在1到n之間 返回第k大的數。解法一 結合快排思想,將陣列從大到小排序的過程中返回確定好的元素的下標,與k比較,將範圍逐漸縮小。public class test int n findkth arr,5,2 system.out.println...