数据结构实验之排序四:寻找大富翁
来源:互联网 发布:curl json 编辑:程序博客网 时间:2024/05/24 05:57
数据结构实验之排序四:寻找大富翁
Time Limit: 200MS Memory Limit: 512KB
Problem Description
2015胡润全球财富榜调查显示,个人资产在1000万以上的高净值人群达到200万人,假设给出N个人的个人资产值,请你快速找出排前M位的大富翁。
Input
首先输入两个正整数N( N ≤ 10^6)和M(M ≤ 10),其中N为总人数,M为需要找出的大富翁数目,接下来给出N个人的个人资产,以万元为单位,个人资产数字为正整数,数字间以空格分隔。
Output
一行数据,按降序输出资产排前M位的大富翁的个人资产值,数字间以空格分隔,行末不得有多余空格。
Example Input
6 3
12 6 56 23 188 60
Example Output
188 60 56
Hint
请用堆排序完成。
Author
xam
#include<stdio.h>#include<stdlib.h>void exchange(int a[],int x,int y)//交换{ int t; t = a[x]; a[x] = a[y]; a[y] = t;}void HeapAdjust(int *a,int l,int h)//筛选{ int i,temp; temp = a[l]; for(i = 2*l;i <= h;i=i*2) { if(i < h && a[i] > a[i+1])//i为较大的数的下标; i++; if(temp <= a[i]) break; a[l] = a[i]; l = i; } a[l] = temp;}void HeapSort(int *a,int n){ int i; for(i = n/2;i > 0;i--)//把a[1,n]建成大顶堆 HeapAdjust(a,i,n); for(i = n;i > 1;i--) { exchange(a,1,i);//将堆顶记录和当前未经排序子序列a[1,i]中最后一个记录交换 HeapAdjust(a,1,i-1);//将a[1,i-1]重新调整为大顶堆; }}int main(){ int m,n,i,j; int a[15]; int k = 1; scanf("%d %d",&n,&m); for(i = 1;i <= n;i++) { int x; scanf("%d",&x); if(m >= k) a[k++] = x; else { int b = 1; for(j = 2;j <= m;j++) { if(a[b] > a[j]) b = j; } if(a[b] < x)a[b] = x; } } HeapSort(a,m); for(i = 1;i <= m;i++) { if(i==m)printf("%d\n",a[i]); else printf("%d ",a[i]); } return 0;}
阅读全文
0 0
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- WPF与MVVM的实现(五)注册路由事件
- c++内存泄漏和内存碎片的问题
- 数据库与数据仓库
- boost库编译与安装
- C语言单元小结(6)
- 数据结构实验之排序四:寻找大富翁
- Maven-01-私服搭建及使用
- 贪吃蛇的游戏设计和算法
- android之微信分享图片
- 文件传输基础——Java IO流
- C# 设计模式-生成器(Builder)
- 求两个整数的最大公约数
- Hbase-API-KeyValue、写缓冲区
- 智能蛇