http://ac.jobdu.com/problem.php?pid=1034
版本一使用sort, 版本二优化了一下,使用partial_sort。
版本一
// 浙大09
// 简单排序题
// 起初使用sort,后改用partial_sort,时间减少10ms。
//
#include <stdio.h>
#include <algorithm>
#define SIZE 100005
using namespace std;
bool cmp(int x, int y)
{
return x>y;
}
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("E:\\in.txt", "r", stdin);
//freopen("E:\\out.txt", "w", stdout);
#endif
int n, m;
while(scanf("%d%d", &n, &m) != EOF)
{
if(n == 0 && m == 0)
{
break;
}
int a[SIZE];
int i;
for(i=0; i< n; i++)
{
scanf("%d", &a[i]);
}
sort(a, a+n, cmp);
int min = n < m ? n : m;
for(i=0; i<min; i++)
{
printf("%d", a[i]);
if(i != min-1)
{
printf(" ");
}
}
printf("\n");
}//while
return 0;
}
版本二
#include <stdio.h>
#include <algorithm>
#define SIZE 100005
using namespace std;
bool cmp(int x, int y)
{
return x>y;
}
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("E:\\in.txt", "r", stdin);
//freopen("E:\\out.txt", "w", stdout);
#endif
int n, m;
while(scanf("%d%d", &n, &m) != EOF)
{
if(n == 0 && m == 0)
{
break;
}
int a[SIZE];
int i;
for(i=0; i< n; i++)
{
scanf("%d", &a[i]);
}
/// 优化部分
int min = n < m ? n : m;
partial_sort(a, a+min, a+n, cmp);//对[a, a+n)排序,[a, a+min)按cmp排序
for(i=0; i<min; i++)
{
printf("%d", a[i]);
if(i != min-1)
{
printf(" ");
}
}
printf("\n");
}//while
return 0;
}