noi 統計前k大的數

2022-04-06 07:19:58 字數 638 閱讀 1535

給定乙個陣列,統計前k大的數並且把這k個數從大到小輸出。

第一行包含乙個整數n,表示陣列的大小。n < 100000。

第二行包含n個整數,表示陣列的元素,整數之間以乙個空格分開。每個整數的絕對值不超過100000000。

第三行包含乙個整數k。k < n。

從大到小輸出前k大的數,每個數一行。

104 5 6 9 8 7 1 2 3 059

8765

1 #include2 #include3 #include4 #include5 #include6 #include

7 #include8

9using

namespace

std;

1011

int a[100010

],n,k;

1213

int comp(int a,int

b)14

1718

intmain()

1925 cin>>k;

26 sort(a+1,a+n+1

,comp);

27for(int i=1; i<=k; i++)

28cout<31return0;

32 }

前k大的數

取前 k 個數,並取出最小值 mi k min k,n 遍歷 第 k 1 n的數,與 mi k 比較。若小於 mi k 遍歷下乙個。若大於 mi k 放入該值,並移除mi k 後,再次取出最小值 mi k min k,n 時間複雜度 o n k 1.將資料分成三個區間 1 k 1,k m,m 1 n...

第k大的數,前k大的數

1 排序後去出前k個,o n log n 如果k2 o nlog k 快排把數分為了兩個部分,所以考慮兩個情況,如果大的部分的個數 k,說明只要繼續在大的部分找就可以了,如果大的部分的個數3 o nlog maxv minv delta 平均為o nlogn 轉化為找第k個,假設最大的數為maxv,...

尋找前k大的數

input 輸入有多個測試用例,每個測試用例是兩行 第1行是兩個整數n和k,中間用空格隔開 n k 第2行有n個整數,每兩個數字中間用空格隔開 輸入以eof結束 output 對於每乙個測試用例,輸出一行,k個整數,就是它的前k大的整數,按照降序排列輸出,每兩個數字之間用空格隔開,最後乙個數字後面沒...