AOI6 2021-09-24 18:59 采纳率: 92.3%
浏览 30
已结题

运用C语言解答,最好有注释

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

  • 写回答

1条回答 默认 最新

  • 清风puts 2021-09-24 19:18
    关注

    简单的排序,从大到小排序,输出第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。当然也可以用其他的排序算法。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月3日
  • 已采纳回答 9月25日
  • 创建了问题 9月24日

悬赏问题

  • ¥15 CATIA有些零件打开直接单机确定终止
  • ¥15 请问有会的吗,用MATLAB做
  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 ARIMA模型时间序列预测用pathon解决
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序,怎么查看客户esp32板子上程序及烧录地址