描述
使用者輸入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...