如何在一维数组中输出多个最大值的下标
时间: 2024-12-24 18:20:19 浏览: 8
要在一维数组中找到并输出所有最大值的下标,你可以使用以下步骤:
1. 初始化:定义一个变量 `max_value` 存储当前已知的最大值,以及一个空的 `indices` 数组用于存储最大值的下标。
2. 遍历数组:遍历整个数组,对于每个元素,执行以下操作:
a. 如果当前元素大于 `max_value`,则更新 `max_value` 并清空 `indices`,因为找到了一个新的最大值。
b. 如果当前元素等于 `max_value`,但还没有添加到 `indices` 中,就将其下标添加到 `indices`。
3. 输出结果:遍历结束后,数组 `indices` 将包含所有最大值的下标。
以下是一个简单的 C 语言示例代码实现这个逻辑:
```c
#include <stdio.h>
void find_max_indices(int arr[], int n, int indices[], int *count) {
int max_value = arr[0];
*count = 0;
for (int i = 1; i < n; i++) {
if (arr[i] > max_value) {
max_value = arr[i];
*count = 0;
indices[*count++] = i;
} else if (arr[i] == max_value) {
indices[*count++] = i;
}
}
}
int main() {
int arr[] = {5, 10, 10, 8, 15, 10};
int n = sizeof(arr) / sizeof(arr[0]);
int indices[n], count = 0;
find_max_indices(arr, n, indices, &count);
printf("Max value(s): %d\n", max_value);
printf("Indices of max values: ");
for (int i = 0; i < count; i++) {
printf("%d ", indices[i]);
}
return 0;
}
```
在这个例子中,我们首先查找最大值,然后在找到新的最大值时重置计数器和 `indices`。当遇到相等的最大值时,只添加新的下标到 `indices`。
阅读全文