Sid有一只兔子叫Bunny。Bunny有n个萝卜,每个萝卜高h_i。Sid想知道第m高的萝卜有多高。
Input
第一行一个组数T
每组数据第一行两个整数n, m。1 <= m <= n <= 100
每组数据第二行有n个整数h_1, h_2, ~, h_n。1 <= h_i <= 1000000000
Output
每组数据输出一个整数表示第m高的萝卜高度。
SampleInput
1
2 1
1 2
SampleOutput
2
Sid有一只兔子叫Bunny。Bunny有n个萝卜,每个萝卜高h_i。Sid想知道第m高的萝卜有多高。
Input
第一行一个组数T
每组数据第一行两个整数n, m。1 <= m <= n <= 100
每组数据第二行有n个整数h_1, h_2, ~, h_n。1 <= h_i <= 1000000000
Output
每组数据输出一个整数表示第m高的萝卜高度。
SampleInput
1
2 1
1 2
SampleOutput
2
简单的排序,从大到小排序,输出第m高的数。
代码如下:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000;
int n,m,T,a[maxn];
//bool cmp(int x,int y){
// return x>y;
//}
void quickSort(int left, int right){
if(left >= right) //递归边界条件
return;
int i, j, tmp;
i = left, j = right;
tmp = a[left]; //取最左边的数为基准数
while (i < j){
while (a[j] <= tmp && i < j)
j--;
while (a[i] >= tmp && i < j)
i++;
if(i < j){
swap(a[i],a[j]);//如果前一个数比后一个数小,交换两数
}
}
//基准数归位
a[left] = a[i];
a[i] = tmp;
quickSort(left, i - 1);//递归左边
quickSort(i + 1, right);//递归右边
}
int main(){
cin>>T;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
//sort(a+1,a+n+1,cmp); STL库,与前面cmp函数一起用。
//表示对a数组从大到小进行排序。(简便)
quickSort(0,n);
cout<<a[m];
}
此处用到快速排序,也提及sort。当然也可以用其他的排序算法。