题目描述:编写一个函数getMaxK(intarr[],intn,intk,int*km),该函数用于找出数组
arr中元素的第k大的值,并将值存于km所指的变量中。在main函数中,输入n个整数
和k,调用函数getMaxK,输出n个整数序列中第k大的值。
如图所示
第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;
}
对数组排好序,k-1位置下的就是要寻找的值。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!