有一组N个数要确定其中的K个最大值C语言
时间: 2024-01-28 08:02:48 浏览: 21
你可以使用排序算法来解决这个问题。以下是一种基于冒泡排序的简单方法:
1. 定义一个大小为K的数组,用于存储最大的K个数。
2. 初始化这个数组为前K个数。
3. 遍历剩余的N-K个数:
- 如果当前数大于数组中的最小值,则将最小值替换为当前数。
4. 遍历结束后,数组中存储的就是其中的K个最大值。
以下是一个示例代码:
```c
#include <stdio.h>
void findKMax(int arr[], int n, int k) {
int maxArr[k];
int i, j;
// 初始化数组
for (i = 0; i < k; i++) {
maxArr[i] = arr[i];
}
// 遍历剩余的数
for (i = k; i < n; i++) {
// 查找最小值的索引
int minIndex = 0;
for (j = 1; j < k; j++) {
if (maxArr[j] < maxArr[minIndex]) {
minIndex = j;
}
}
// 如果当前数大于最小值,则替换
if (arr[i] > maxArr[minIndex]) {
maxArr[minIndex] = arr[i];
}
}
// 输出结果
printf("K largest numbers are: ");
for (i = 0; i < k; i++) {
printf("%d ", maxArr[i]);
}
}
int main() {
int arr[] = {10, 5, 8, 12, 3};
int n = sizeof(arr) / sizeof(arr[0]);
int k = 3;
findKMax(arr, n, k);
return 0;
}
```
该示例代码中,数组arr为输入的N个数,变量n表示数组的大小,变量k表示要找出的最大值的个数。输出结果为K个最大值。你可以根据实际需求进行修改和优化。