sort
Description
给你n个整数,请按从大到小的顺序输出其中前m大的数。
Input
每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。
Output
对每组测试数据按从大到小的顺序输出前m大的数。
Sample Input
5 3
3 -35 92 213 -644
Sample Output
213 92 3
Hint
Hint
请用VC/VC++提交
#include<stdio.h>
int s[1000000];
int adjust(int s[], int l, int r) {
int i = l, j = r;
int x = s[l];
while(i < j){
while(i < j && s[j] >= x ) j--;
if(i < j) {
s[i] = s[j];
i++;
}
while(i < j && s[i] < x ) i++;
if(i < j){
s[j] = s[i];
j--;
}
}
s[i] = x;
return i;
}
void qsort(int s[], int l, int r) {
if(l < r){
int i = adjust(s, l, r);
qsort(s, l, i-1);
qsort(s, i+1, r);
}
}
int main(){
int n, m;
while(~scanf("%d%d", &n, &m)){
for(int i=0; i<n; i++) scanf("%d", &s[i]);
qsort(s, 0, n-1);
for(int i=n-1; i>=n-m; i--)
i==n-1? printf("%d", s[i]) : printf(" %d", s[i]);
printf("\n");
}
return 0;
}
本文介绍了一个使用快速排序算法解决特定问题的例子:如何找出一组整数中最大的几个数。通过具体的代码实现展示了快速排序的基本思想,并提供了完整的解决方案。
608

被折叠的 条评论
为什么被折叠?



