PTA 尋找大富翁 (歸併排序)

2021-10-05 05:13:18 字數 1163 閱讀 1658

胡潤研究院的調查顯示,截至2023年底,中國個人資產超過1億元的高淨值人群達15萬人。假設給出n個人的個人資產值,請快速找出資產排前m位的大富翁。

輸入首先給出兩個正整數n(≤10​^6​​ )和m(≤10),其中n為總人數,m為需要找出的大富翁數;接下來一行給出n個人的個人資產值,以百萬元為單位,為不超過長整型範圍的整數。數字間以空格分隔。

在一行內按非遞增順序輸出資產排前m位的大富翁的個人資產值。數字間以空格分隔,但結尾不得有多餘空格。

//input83

81273

209518

//output

2018

12

要考慮m>n的情況

排序方法的選擇,選擇效率高的,要考慮最壞的情況,題目測試的乙個點就是資料量大。比如快速排序會超時(自己寫就會,使用系統的sort就不會),所以選擇歸併排序。

看到乙個不錯的方法解這個題:

#include

#include

int k[

1000005];

//原陣列

int t[

1000005];

//輔助陣列

void

merge

(int sr,

int tr,

int left,

int mid,

int right)

while

(i <= ii)

//將左半部分陣列的剩餘元素新增進tr

tr[flag++

]= sr[i++];

while

(j <= jj)

//將右半部分陣列的剩餘元素新增進tr

tr[flag++

]= sr[j++];

for(

int index = left; index < flag; index++

)//用輔助陣列更新原陣列

sr[index]

= tr[index];}

void

msort

(int sr,

int tr,

int left,

int right)

}int

main()

pta 尋找大富翁

5 12 尋找大富翁 25分 2015年胡潤研究院的調查顯示,截至2014年9月,個人資產在600萬元以上高淨值人群達290萬人。假設給出n個人的個人資產值,請快速找出資產排前m位的大富翁。輸入格式 輸入首先給出兩個正整數nnn 106 le 10 6 10 和mmm 10 le 10 10 其中n...

資料結構 PTA 尋找大富翁 排序

7 17 尋找大富翁 25分 胡潤研究院的調查顯示,截至2017年底,中國個人資產超過1億元的高淨值人群達15萬人。假設給出n個人的個人資產值,請快速找出資產排前m位的大富翁。輸入首先給出兩個正整數n 10 6 和m 10 其中n為總人數,m為需要找出的大富翁數 接下來一行給出n個人的個人資產值,以...

PTA 7 3 尋找大富翁

胡潤研究院的調查顯示,截至2017年底,中國個人資產超過1億元的高淨值人群達15萬人。假設給出n個人的個人資產值,請快速找出資產排前m位的大富翁。輸入格式 輸入首先給出兩個正整數n 10 6 和m 10 其中n為總人數,m為需要找出的大富翁數 接下來一行給出n個人的個人資產值,以百萬元為單位,為不超...