给你n个整数,请按从大到小的顺序输出其中前m大的数。

每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。<快排>

//sort也可以过//936Ms
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=1000005;
int ans[maxn];
bool cmp(int a,int b)
{
return a>b;
}
int main ()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=0;i<n;i++)
scanf("%d",&ans[i]);
sort(ans, ans+n, cmp);
for(int i=0;i<m-1;i++)
printf("%d ",ans[i]);
printf("%d\n",ans[m-1]);
}
return 0;
}
//快排1//873Ms
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=1000005;
int ans[maxn];
void quickSort(int l,int r)
{
if(l>=r)
return ;
int i,j;
for(j=i=l+1;i<=r;i++)
if(ans[i]>ans[l])
swap(ans[i],ans[j++]);
swap(ans[l],ans[--j]);
quickSort(l, j-1);
quickSort(j+1, r);
}
/*bool cmp(int a,int b)
{
return a>b;
}*/
int main ()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=0;i<n;i++)
scanf("%d",&ans[i]);
//sort(ans, ans+n, cmp);
quickSort(0, n-1);
for(int i=0;i<m-1;i++)
printf("%d ",ans[i]);
printf("%d\n",ans[m-1]);
}
return 0;
}
//快排2//982ms
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=1000005;
int ans[maxn];
void quickSort(int l,int r)
{
if(l>=r)
return ;
int left=l,right=r,temp=ans[left];
while(left<right)
{
while(left<right&&ans[right]<=temp)
right--;
ans[left]=ans[right];
while(left<right&&ans[left]>=temp)
left++;
ans[right]=ans[left];
}
ans[left]=temp;
quickSort(l,left-1);
quickSort(left+1, r);
}
/*bool cmp(int a,int b)
{
return a>b;
}*/
int main ()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=0;i<n;i++)
scanf("%d",&ans[i]);
//sort(ans, ans+n, cmp);
quickSort(0, n-1);
for(int i=0;i<m-1;i++)
printf("%d ",ans[i]);
printf("%d\n",ans[m-1]);
}
return 0;
}
//快排3//624Ms
#include <iostream>
#include <string.h>
#include <cstdio>
#include<algorithm>
using namespace std;
const int N=1000005;
int num[N];
int partition(int low,int high){
int i=low,j=high,key=num[low];
while(i<j){
while(i<j&&num[j]>key)
--j;
swap(num[i],num[j]);
//int t=num[i]; num[i]=num[j];num[j]=t;
while(i<j&&num[i]<key)
++i;
swap(num[i],num[j]);
//t=num[i]; num[i]=num[j];num[j]=t;
}
return i;
}
void quick_sort(int low,int high){
if(low<high){
int x=partition(low,high);
quick_sort(low,x-1);
quick_sort(x+1,high);
}
}
int main(){
//freopen("11.txt","r",stdin);
int n,m;
while(~scanf("%d%d",&n,&m)){
for(int i=0;i<n;++i)
scanf("%d",&num[i]);
quick_sort(0,n-1);
for(int i=n-1;i>n-m;--i)
printf("%d ",num[i]);
printf("%d",num[n-m]);
printf("\n");
}
return 0;
}

最新文章

  1. linux开发摘要
  2. Java Arrays 排序
  3. 蓝桥杯 2015年省赛最后一题 生命之树(树形dp)
  4. 【POJ】【3680】Intervals
  5. 【Jetlang】一个高性能的Java线程库
  6. facebook海量图片存储系统与淘宝TFS系统比较
  7. 【转】Java 字符串常用操作(String类)
  8. Python Set集合,函数,深入拷贝,浅入拷贝,文件处理
  9. [css 揭秘]:CSS揭秘 技巧(三):背景定位
  10. Asp.Net Core微服务再体验
  11. Dynamics 365-如何下载新版本的Tools
  12. 能ping通虚拟机,但snmp报文 Destination unreachable(Host administratively prohibited
  13. 关于C语言内存的一些理解
  14. centos6.5修改主机名
  15. lanmp环境中创建个软连接
  16. 深入理解java虚拟机读后总结(个人总结记录)
  17. 关于初步搭建完成SSH环境之后,JUnit test 测试成功,页面测试时:@Resource 注入的dao为null
  18. centos 7安装tomcat
  19. Binary Tree的3种非Recursive遍历
  20. 8.openldap mirrormode(主主同步)

热门文章

  1. HDU 5352 MZL&#39;s City
  2. NGUI插件的一个扩展---NGUI_HUD_Text
  3. Soj题目分类
  4. &lt;marquee&gt;,视频和音频的插入,正则表达式
  5. 【记录】ACM计划
  6. HTML与DOM BOM javascript
  7. QML插件扩展2(基于C++的插件扩展)
  8. XTEA加密算法
  9. asp之servervariables全部显示
  10. transform 属性小解