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

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日