7-19(排序) 寻找大富翁 (25 分)
胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人。假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁。

输入格式:

输入首先给出两个正整数N(≤10
6
)和M(≤10),其中N为总人数,M为需要找出的大富翁数;接下来一行给出N个人的个人资产值,以百万元为单位,为不超过长整型范围的整数。数字间以空格分隔。

输出格式:

在一行内按非递增顺序输出资产排前M位的大富翁的个人资产值。数字间以空格分隔,但结尾不得有多余空格。

输入样例:

8 3
8 12 7 3 20 9 5 18

输出样例:

20 18 12
 
 
用归并排序做的,用快速排序做最后一个点超时
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define MAX_SIZE 1100000
  4. int a[MAX_SIZE]; //因为MAX_SIZE 太大,所以数组要定义在函数以外
  5. int temp[MAX_SIZE]; //中间数组,用完后赋值给原数组
  6. int merging(int* list1,int list1_size,int *list2,int list2_size)
  7. {
  8. int i=0,j=0,k=0;
  9. while(i<list1_size&&j<list2_size) //线性表的merge排序操作,merge的意思是融入
  10. {
  11. if(list1[i]<list2[j])
  12. {
  13. temp[k++]=list1[i++]; //注意不要漏掉里面的++
  14. }
  15. else
  16. {
  17. temp[k++]=list2[j++];
  18. }
  19. }
  20. while(i<list1_size)
  21. {
  22. temp[k++]=list1[i++];
  23. }
  24. while(j<list2_size)
  25. {
  26. temp[k++]=list2[j++];
  27. }
  28. for(i=0;i<list1_size+list2_size;i++) //赋值给原数组
  29. {
  30. list1[i]=temp[i];
  31. }
  32. return 0;
  33. }
  34.  
  35. int MergeSort(int *a,int n)
  36. {
  37. if(n>1)
  38. {
  39. int *list1=a;
  40. int list1_size=n/2;
  41. int *list2=a+list1_size;
  42. int list2_size=n-list1_size;
  43. MergeSort(list1,list1_size); //递归左边的数组,对半分
  44. MergeSort(list2,list2_size); //递归右边的数组,对半分,因为对半分的,所以时间复杂度为log(n)
  45.  
  46. merging(list1,list1_size,list2,list2_size); //合的操作,将左右有序的合为一个数组
  47.  
  48. }
  49. return 0;
  50. }
  51.  
  52. int main()
  53. {
  54. int n,m;
  55. scanf("%d%d",&n,&m);
  56. int i,flag=0;
  57. for(i=0;i<n;i++)
  58. {
  59. scanf("%d",&a[i]);
  60. }
  61. MergeSort(a,n);
  62. if(n>m) //---这里加一个判断,n与m不一定谁大,不然有一个点过不了
  63. {
  64. for(i=n-1;i>=n-m;i--)
  65. {
  66. if(flag==1)printf(" ");flag=1;
  67. printf("%d",a[i]);
  68. }
  69. }
  70. else
  71. {
  72. for(i=n-1;i>=0;i--)
  73. {
  74. if(flag==1)printf(" ");flag=1;
  75. printf("%d",a[i]);
  76. }
  77. }
  78. return 0;
  79. }

7-19(排序) 寻找大富翁 (25 分)(归并排序)(C语言实现)的更多相关文章

  1. PTA数据结构与算法题目集(中文) 7-38寻找大富翁 (25 分)

    PTA数据结构与算法题目集(中文)  7-38寻找大富翁 (25 分) 7-38 寻找大富翁 (25 分)   胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人.假 ...

  2. 06-图1 列出连通集 (25分)(C语言邻接表实现)

    题目地址:https://pta.patest.cn/pta/test/558/exam/4/question/9495 由于边数E<(n*(n-1))/2 所以我选用了邻接表实现,优先队列用循 ...

  3. 1010 一元多项式求导 (25 分) C语言

    设计函数求一元多项式的导数.(注:x​n​​(n为整数)的一阶导数为nx​n−1​​.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数).数字间以空格分隔. ...

  4. SDUT 3401 数据结构实验之排序四:寻找大富翁.!

    数据结构实验之排序四:寻找大富翁 Time Limit: 150MS Memory Limit: 512KB Submit Statistic Problem Description 2015胡润全球 ...

  5. PTA 09-排序1 排序 (25分)

    题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/720 5-12 排序   (25分) 给定NN个(长整型范围内的)整数,要求输出从小到大 ...

  6. hdoj 3785 寻找大富翁【优先队列+sort排序】

    寻找大富翁 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

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

    数据结构实验之排序四:寻找大富翁 Time Limit: 200 ms Memory Limit: 512 KiB Submit Statistic Discuss Problem Descripti ...

  8. PAT 甲级 1062 Talent and Virtue (25 分)(简单,结构体排序)

    1062 Talent and Virtue (25 分)   About 900 years ago, a Chinese philosopher Sima Guang wrote a histor ...

  9. PAT 甲级 1028 List Sorting (25 分)(排序,简单题)

    1028 List Sorting (25 分)   Excel can sort records according to any column. Now you are supposed to i ...

随机推荐

  1. Linux----虚拟机克隆、快照、删除、

    克隆 已经安装一台linux系统 还想要更多的,直接克隆CentOS即可 使用vm ware 的克隆操作 注意: 使用前先关闭目前已开启的虚拟机 快照 作用: 虚拟系统出现异常,需要回到原先的状态,此 ...

  2. Java基础—字符串的比较

    1."=="方法进行比较时有以下两种情况: 基础数据类型:比较的是数据值是否相同 引用类型:比较的是地址值是否相同 字符串是对象,它比较内容是通过一个方法实现的,equals() ...

  3. new和@Autowired的区别

    controller层: @RequestMapping("/payment") @RestController public class WxPayController { pu ...

  4. Python之VSCode

    在学习Python的过程中,一直没有找到比较趁手的第三方编辑器,用的最多的还是Python自带的编辑器.由于本人用惯了宇宙第一IDE(Visual Studio),所以当Visual Studio C ...

  5. linux的服务自动启动的配置

    1.开机启动时自动运行程序 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init.init根据配置文件继续引导过程,启动其它进程.通常情况下,修改放置在 /etc/rc或 /et ...

  6. 从零开始,开发一个 Web Office 套件(13):删除、替换已选中文字

    这是一个系列博客,最终目的是要做一个基于 HTML Canvas 的.类似于微软 Office 的 Web Office 套件(包括:文档.表格.幻灯片--等等). 博客园:<从零开始, 开发一 ...

  7. 编写 Shell 程序,实现自动删除 50 个账号的功能,账号名为stud1 至 stud50 ?

    #!/bin/bashfor((i=1;i<51;i++))do  userdel -r stud$idone

  8. struts2学习二:Tomcat的部署目录和访问路径问题

    1:idea中配置tomcat后,那么最终的web工程发布到哪里去了?为什么在访问路径中不加工程名就可以访问? 1.1:因为tomcat有段时间没接触了,先回顾下tomcat的目录结构吧? 如图所示: ...

  9. 阐述final、finally、finalize的区别?

    - final:修饰符(关键字)有三种用法:如果一个类被声明为final,意味着它不能再派生出新的子类,即不能被继承,因此它和abstract是反义词.将变量声明为final,可以保证它们在使用中不被 ...

  10. C++多态例子_虚函数

    #include<iostream> using namespace std; class parent { public: virtual void fun() { cout <& ...