这道题就是数据有点大,所以后面的几个程序是超时的,八种方法中通过了前面四种。

方法一(Accept)
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<vector>
using namespace std;
const int maxx=1e6+10;
int cmp(const void*a,const void*b){return *(int*)b-*(int*)a;
}
int main(){int n,m;int a[maxx];while(cin>>n>>m){memset(a,0,sizeof(a));for(int i=1;i<=n;i++){scanf("%d",&a[i]);}qsort(a+1,n,sizeof(int),cmp);for(int i=1;i<m;i++){cout<<a[i]<<" ";}cout<<a[m]<<endl;}return 0;
}
方法二:(Accept) -快排#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<vector>
using namespace std;
const int maxx=1e6+10;
int Pation(int left,int right,int pa[]){int i=left,j=right;int temp=pa[left];while(i<j){while(temp<=pa[j]&&i<j)j--;if(i<j){pa[i++]=pa[j];}while(temp>=pa[i]&&i<j)i++;if(i<j){pa[j--]=pa[i];}}pa[i]=temp;return i;
}
void Quicksort(int left,int right,int pa[]){if(left>=right)return ;int mid=Pation(left,right,pa);Quicksort(left,mid-1,pa);Quicksort(mid+1,right,pa);
}
void quicksort(int n,int pa[]){Quicksort(0,n-1,pa);
}
int main(){int n,m;int a[maxx];while(cin>>n>>m){memset(a,0,sizeof(a));for(int i=0;i<n;i++){scanf("%d",&a[i]);}quicksort(n,a);for(int i=n-1;i>n-m;i--){cout<<a[i]<<" ";}cout<<a[n-m]<<endl;}return 0;
}
方法三:(Accept)-堆排序#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<vector>
using namespace std;
const int maxx=1e6+10;
void Prodown(int pa[],int s,int size){int p=s,c=2*p+1;int temp=pa[p];while(c<size){if(c+1<size&&pa[c+1]>pa[c]){c++;}if(temp>=pa[c])break;else{pa[p]=pa[c];p=c;c=2*p+1;}}pa[p]=temp;
}
void Buildheap(int pa[],int size){for(int i=size/2-1;i>=0;i--){Prodown(pa,i,size);}
}
void Heapsort(int pa[],int n){int temp;Buildheap(pa,n);for(int i=n-1;i>=0;i--){temp=pa[i];pa[i]=pa[0];pa[0]=temp;Prodown(pa,0,i);}
}
int main(){int n,m;int a[maxx];while(cin>>n>>m){memset(a,0,sizeof(a));for(int i=0;i<n;i++){scanf("%d",&a[i]);}Heapsort(a,n);for(int i=n-1;i>n-m;i--){cout<<a[i]<<" ";}cout<<a[n-m]<<endl;}return 0;
}
方法四:(Accept)
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<vector>
using namespace std;
const int maxx=1e6+10;
int main(){int n,m;int a[maxx];while(cin>>n>>m){memset(a,0,sizeof(a));for(int i=1;i<=n;i++){scanf("%d",&a[i]);}sort(a+1,a+n+1);for(int i=n;i>n-m+1;i--){cout<<a[i]<<" ";}cout<<a[n-m+1]<<endl;}return 0;
}
方法五:(直接插入排序-超时)
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<map>
using namespace std;
const int maxx=1e6+10;
int n,m;
int a[maxx];
int main(){while(scanf("%d %d",&n,&m)){for(int i=0;i<n;i++){scanf("%d",&a[i]);}int temp;for(int i=1;i<n;i++){int j=i;temp=a[i];while(j>=1&&temp<a[j-1]){a[j]=a[j-1];j--;}a[j]=temp;}for(int i=n-1;i>n-m;i--){cout<<a[i]<<" ";}cout<<a[n-m]<<endl;}return 0;
}
方法六:(折半插入排序 -超时)
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<map>
using namespace std;
const int maxx=1e6+10;
int n,m;
int a[maxx];
void Midsort(int pa[],int n){int left,right;int temp;for(int i=1;i<n;i++){left=0,right=i-1;temp=a[i];while(left<=right){int mid=(left+right)>>1;if(a[mid]>temp){right=mid-1;}else{left=mid+1;}}for(int j=i-1;j>=left;j--){a[j+1]=a[j];}a[left]=temp;}
}
int main(){while(scanf("%d %d",&n,&m)){for(int i=0;i<n;i++){scanf("%d",&a[i]);}Midsort(a,n);for(int i=n-1;i>n-m;i--){cout<<a[i]<<" ";}cout<<a[n-m]<<endl;}return 0;
}
方法七:(希尔排序-超时)
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
const int maxx=1e6+10;
int a[maxx];
int n,m;
template<class T>
void Shellsort(T *pa,int n){T temp;int gap=n/2;while(gap){for(int i=gap;i<2*gap&&i<n;i++){for(int j=i;j<n;j+=gap){temp=pa[j];int k=j;while(k>=gap&&temp<pa[k-gap]){pa[k]=pa[k-gap];k-=gap;}pa[k]=temp;}}gap/=2;}
}
int main(){while(scanf("%d %d",&n,&m)){for(int i=0;i<n;i++){scanf("%d",&a[i]);}Shellsort(a,n);for(int i=n-1;i>n-m;i--){cout<<a[i]<<" ";}cout<<a[n-m]<<endl;}return 0;
}
方法八(哈希-超时)
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int inf = 500050;
int a[inf];
int hashs[2*inf];
int n, m;
int main() {while (scanf("%d %d", &n, &m)) {memset(hashs, 0, sizeof(hashs));memset(a, 0, sizeof(a));for (int i = 0; i < n; i++) {cin >> a[i];hashs[a[i] + inf] = a[i];}for (int i = 2 * inf-1; m >0; i--) {if (hashs[i] != 0) {if (m != 1) {cout << i - inf << " ";}else {cout << i - inf << endl;}m--;}}}return 0;
}

HDU1425简单排序题相关推荐

  1. HDU1040简单排序题

    简单排序直接上代码:总共使用了九种方法解决这道题 方法一: #include<iostream> #include<algorithm> #include<cmath&g ...

  2. DNA排序,简单的排序题

    现在有一些长度相等的DNA串(只由ACGT四个字母组成),请将它们按照逆序对的数量多少排序. 逆序对指的是字符串A中的两个字符A[i].A[j],具有i < j 且 A[i] > A[j] ...

  3. JAVA 判断简单密码算法_十道简单算法题二【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  4. java的简单算法题_[2]十道算法题【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  5. 学习笔记之15道简单算法题

    15道简单算法题 http://www.cnblogs.com/hlxs/archive/2014/06/06/3772333.html (●-●) | 剑指Offer_编程题_牛客网 http:// ...

  6. CCF CSP 201609-2 火车购票(C++语言100分)[简单模拟题]

    1. 问题链接:CCF 201609-2 火车购票 试题编号: 201609-2 试题名称: 火车购票 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 请实现一个铁路购票系统的 ...

  7. 十道简单算法题二【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  8. 来,做一道字节跳动面试的简单算法题

    面试大厂,算法基本是必面的,特别是字节跳动,技术面最后一个问题就是算法题,这次给大家带来一道字节跳动面试出的一道简单算法题. 请听题: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递 ...

  9. NOI 1.10 编程基础之简单排序 C++

    NOI 1.10 编程基础之简单排序答案 C++ 接下来这一段代码完全可以造福你,经过提交为AC准确无误! #1.谁考了第k名 首先这一道题简单来说还是使用结构体较为简便.结构体常考题目主要就是排序, ...

最新文章

  1. [JSP]解决Maven创建项目失败
  2. 对css float 浮动的学习心得
  3. 转载:【opencv入门教程之三】:图片的载入|显示|输出
  4. pyqt5中的对话框
  5. js使用defineProperty的一些坑
  6. java 日期calendar_java时间对象Date,Calendar和LocalDate/LocalDateTime
  7. vue-router各个属性的作用及用法
  8. python测试rabbitmq简易实例
  9. UIProgressView的详细使用
  10. uploadify http 302问题说明
  11. python数据模型和各种实用小技巧,保证让你更PYTHONIC
  12. ASP.NET中登录后反复跳转回登录页面
  13. 产品经理——工作规范指南
  14. 银联统一规范的收单业务消息域
  15. 96---Python 绘制费马螺旋线
  16. 数据恢复揭秘:三星硬盘开盘数据恢复全过程
  17. VMware虚拟机下Centos7 桥接方式网络配置完整步骤
  18. scikit-learn 的设计
  19. Java + OpenCV 实现图片修复(去水印)(JavaCV)
  20. Mybatis中复杂语句标签的简单初步使用

热门文章

  1. 美多商城之用户注册(展示用户注册页面)
  2. IDA Pro IDA 数据库文件
  3. 关于ACM写给自己啦
  4. ACMNO.35 C语言-宏润年 给年份year,定义一个宏,以判别该年份是否闰年。提示:宏名可以定义为LEAP_YEAR,形参为y,既定义宏的形式为 #define LEAP_YEAR(y)
  5. 你可以恢复模糊的图像吗?
  6. OpenCV卡尔曼滤波介绍与代码演示
  7. LOJ6435 PKUSC2018 星际穿越
  8. 06 回归算法 - 损失函数、过拟合欠拟合
  9. TextView实现跑马灯效果
  10. Solaris和Linux的比较、区别、异同云云。。。