找出第k大的數

2021-09-30 13:06:35 字數 761 閱讀 5979

描述

使用者輸入n和k,然後接著輸入n個正整數(無序的),程式在不對n個整數排序的情況下,找出第k大的數。注意,第k大的數意味著從大到小排在第k位的數。

輸入

n

ka1 a2 a3 a4 ..... an

輸出

b
輸入示例

5

232 3 12 5 89

輸出示例

32
提示

這是一道很經典的演算法問題,是公司面試的常見考題。以後學習遞迴之後再回頭看看這道題,或許有新解法。

原始碼

#include using namespace std;

int main()

/****************利用排序法找出第k大的數********************/

for (int i = 0; i < k; i++)}}

/****************輸出結果********************/

cout << a[k-1] << endl;

return

0;}

找出第k大的數

問題 從乙個陣列裡面,找出第k大的數。題目很簡單,要想把第k個數找出來,其實也挺容易的。第一種方法 無非就是先排序,比如用merge sort演算法,整個演算法複雜度為 o nlgn 然後找到第k個即可。第二種方法 如果k很小,比如第五個最大的數,而整個陣列的長度非常的大,那麼,還有一種方法就是,我...

陣列 找出陣列的第k大的數

找出陣列的第k大的數 6,7,8,9,3,2,4,8 第3大的數是4 class solution def call self,nums,k if nums none or len nums 0 return 1 result self.qsort nums,0,len nums 1,k retur...

找出第K小的數

題目描述 查詢乙個陣列的第k小的數,注意同樣大小算一樣大。如 2 1 3 4 5 2 第三小數為3。輸入 輸入有多組資料。每組輸入n,然後輸入n個整數 1 n 1000 再輸入k。輸出 輸出第k小的整數。樣例輸入 6 2 1 3 5 2 2 3 樣例輸出 3 void swap int e1,int...