wwwqwqwww 2022-11-08 22:27 采纳率: 100%
浏览 114
已结题

C语言找出数组arr中元素的第k大的值

题目描述:编写一个函数getMaxK(intarr[],intn,intk,int*km),该函数用于找出数组
arr中元素的第k大的值,并将值存于km所指的变量中。在main函数中,输入n个整数
和k,调用函数getMaxK,输出n个整数序列中第k大的值。
如图所示

img

img

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2022-11-08 22:48
    关注

    第k大,用选择排序的第k趟排序得到的最大值就是

    #include <stdio.h>
    void getMaxK(int *a,int n,int k,int *km)
    {
        int i,j,m,t;
        for(i=0;i<n-1;i++)
        {
            m = i;
            for(j=i+1;j<n;j++)
            {
                if(a[j]>a[m])
                    m = j;
            }
            if(m!=i)
            {
                if(k==i+1)
                {
                    *km = a[m];
                    break;
                }
                else
                {
                    t = a[m];
                    a[m] = a[i];
                    a[i] = t;
                }
            }
        }
    }
    
    int main(){
    
        int i,j,n,k,a[100],km=0;
        scanf("%d%d",&n,&k);
        for(i=0;i<n;i++)
            scanf("%d",&a[i]);
        getMaxK(a,n,k,&km);
        printf("%d",km);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月16日
  • 已采纳回答 11月8日
  • 创建了问题 11月8日

悬赏问题

  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂