数据结构实验之排序四:寻找大富翁

£神魔★判官ぃ 2022-04-08 14:54 273阅读 0赞

数据结构实验之排序四:寻找大富翁

Time Limit: 200 ms Memory Limit: 512 KiB

Submit Statistic

Problem Description

2015胡润全球财富榜调查显示,个人资产在1000万以上的高净值人群达到200万人,假设给出N个人的个人资产值,请你快速找出排前M位的大富翁。

Input

首先输入两个正整数N( N ≤ 10^6)和M(M ≤ 10),其中N为总人数,M为需要找出的大富翁数目,接下来给出N个人的个人资产,以万元为单位,个人资产数字为正整数,数字间以空格分隔。

Output

一行数据,按降序输出资产排前M位的大富翁的个人资产值,数字间以空格分隔,行末不得有多余空格。

Sample Input

  1. 6 3
  2. 12 6 56 23 188 60

Sample Output

  1. 188 60 56

Hint

请用堆排序完成。

Source

xam

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5. int a[1000001];
  6. void swap(int *x,int *y)
  7. {
  8. int temp;
  9. temp=*x;
  10. *x=*y;
  11. *y=temp;
  12. }
  13. int main()
  14. {
  15. int n, m, x;
  16. int i, j;
  17. scanf("%d%d",&n, &m);
  18. for(i = 0; i < n; i++)
  19. {
  20. scanf("%d",&x);
  21. if(x > a[0])
  22. {
  23. a[0] = x;
  24. for(j = 0; j < m-1; j++)
  25. if(a[j] > a[j+1])
  26. {
  27. swap(&a[j], &a[j+1]);
  28. }
  29. else break;
  30. }
  31. }
  32. for(i = m - 1; i >= 0; i--)
  33. printf(i==0?"%d\n":"%d ",a[i]);
  34. return 0;
  35. }

发表评论

表情:
评论列表 (有 0 条评论,273人围观)

还没有评论,来说两句吧...

相关阅读