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

C语言找出数组arr中元素的第k大的值
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用