【问题描述】
编写一个函数 int find (int a[], int n, int k),该函数的功能是求数组 a 中第 k 大的数 (从1开始计数)。
例如有 int a[]={1,2,3,4,5,6,7,8,9,10},
则调用 find(a, 8, 3)时,相当于求1,2,3,4,5,6,7,8 中第3大的数,结果为 6。
【输入形式】
输入n和k
【输出形式】
第k大的数
主函数:
#include<stdio.h>
int main() {
int find(int a[], int n, int k);
int n, k, m;
int a[20]= {10, 18, 99, 20, 50, 36, 80, 206, 989, 66,
88, 75, 166, 156, 306, 605, 258, 369, 586, 866 };
scanf("%d%d", &n, &k);
m = find(a, n, k);
printf("%d", m);
return 0;
}
int find(int a[ ], int n, int k);
int find(int a[], int n, int k) {
int temp, m;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (a[j] < a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
m = a[k - 1];
return m;
}