数据结构实验之排序四:寻找大富翁
来源:互联网 发布:架子鼓app软件下载 编辑:程序博客网 时间:2024/05/24 05:58
数据结构实验之排序四:寻找大富翁
Time Limit: 200MSMemory Limit: 512KB
SubmitStatistic
Problem Description
2015胡润全球财富榜调查显示,个人资产在1000万以上的高净值人群达到200万人,假设给出N个人的个人资产值,请你快速找出排前M位的大富翁。
Input
首先输入两个正整数N( N ≤ 10^6)和M(M ≤ 10),其中N为总人数,M为需要找出的大富翁数目,接下来给出N个人的个人资产,以万元为单位,个人资产数字为正整数,数字间以空格分隔。
Output
一行数据,按降序输出资产排前M位的大富翁的个人资产值,数字间以空格分隔,行末不得有多余空格。
Example Input
6 312 6 56 23 188 60
Example Output
188 60 56
Hint
请用堆排序完成。
代码如下:
堆排序做法:
#include<bits/stdc++.h>using namespace std;void Swap(int st[],int i,int j){ int temp=st[i]; st[i]=st[j]; st[j]=temp;}void HeapAdjust(int st[],int s,int m){ int temp=st[s]; for(int i=2*s; i<=m; i*=2) { if(i<m&&st[i]>st[i+1]) ++i; if(temp<=st[i]) break; st[s]=st[i]; s=i; } st[s]=temp;}void HeapSort(int st[],int n){ for(int i=n/2; i>0; --i) HeapAdjust(st,i,n); for(int i=n; i>1; --i) { Swap(st,1,i); HeapAdjust(st,1,i-1); }}int main(){ int n,m; int st[1001]; int k=1; scanf("%d%d",&n,&m); for(int i=1; i<=n; i++) { int temp; scanf("%d",&temp); if(k<=m) st[k++]=temp; else { int p=1; for(int j=2; j<=m; j++) if(st[p]>st[j]) p=j; if(st[p]<temp) st[p]=temp; } } HeapSort(st,m); for(int i=1; i<=m; i++) { if(i==m) cout<<st[i]<<endl; else cout<<st[i]<<" "; } return 0;}
快速排序做法:
#include<bits/stdc++.h>using namespace std;int cmp(const void *a,const void *b){ return *(int *)b-*(int *)a;}int main(){ int n,m; int a[1001]; int k=0; scanf("%d%d",&n,&m); for(int i=0; i<n; i++) { int temp; scanf("%d",&temp); if(k<m) a[k++]=temp; else { int p=0; for(int j=1; j<m; j++) { if(a[p]>a[j]) p=j; } if(a[p]<temp) a[p]=temp; } } qsort(a,m,sizeof(a[0]),cmp); for(int i=0; i<m; i++) { if(i==m-1) cout<<a[i]<<endl; else cout<<a[i]<<" "; } return 0;}
阅读全文
1 0
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 过滤器的操作
- 微信js-sdk实现分享到朋友圈
- SQL truncate 、delete与drop区别
- Leetcode21.+Leetcode75. 归并排序和快速排序的实现
- Hadoop 参数调优
- 数据结构实验之排序四:寻找大富翁
- js延迟控制图片动画显示
- 参加2017年校招及实习的一点心得
- 算法-字符串
- cat > $file <<EOF...EOF
- 【洛谷 3371】【模板】单源最短路径(spfa+slf)
- IO流的学习—File类
- 发送邮件
- 线性代数 04.01 n维向量