陣列中的第K大元素

2021-07-02 06:03:39 字數 447 閱讀 8224

第k大元素o(n)解法,利用快排+剪枝,直接看**吧

#include 

int k = 7; //第k大,k>0

int sort(int

array, int low, int high)

array[low] = key;

return low;

}void quicksort(int

array, int low, int high)

}int main()

; quicksort(a, 0, 8);

printf("k_max: %d\n", a[k-1]);

return

0;}

reference: 嚴蔚敏等. 資料結構. 清華大學出版社

以上。

(ps. 看來有必要來一次關於排序的大總結了)

215 陣列中的第K大元素

在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。示例 1 輸入 3,2,1,5,6,4 和 k 2 輸出 5 示例 2 輸入 3,2,3,1,2,4,5,5,6 和 k 4 輸出 4 說明 你可以假設 k 總是有效的,且 1...

尋找陣列中的第K大元素

一 簡述 使用資料結構堆,實現查詢陣列中的第k大元素。流程如下 陣列內容堆化 因為是查詢第k大,所以使用大根堆 依次取出並刪除堆的根節點 將剩餘元素堆化 取到第k個即為目標元素。二 實現 include include using namespace std intfindkth vector in...

陣列當中的第K大元素

乙個沒有排序陣列當中的第k大元素,堆選擇排序 優化的選擇排序 對上述陣列進行乙個隨機優化即可解決該問題 private void shuffle int a 完整 public intfindkthlargest int nums,int k else if j k else return nums...