最大值直接遍历数组即可获取到,但是第二大值获取各种文章都有,但是就是没有最简单的,最大值不要的值就是第二大值,就是这么简单
在大部分情况下,数组列表中是有重复值的,如果不允许第二大值==最大值
,需要把for
中if
的 <=
改为 <
,只获取大于当前的值
#include <stdio.h>
int main()
{
int arr[] = {1, 2, 5, 6, 7, 8, 1, 3, 9, 4, 4, 9};
int len = sizeof(arr) / sizeof(int);
// 最大值和索引
int max = 0, index = 0;
// 第二大和索引
int tmax = 0, tindex = 0;
for (int i = 0; i < len; i++)
{
if (max <= arr[i]) {
// 接收max不要的值
tmax = max;
tindex = index;
// 保存当前找到最大的值
max = arr[i];
index = i;
}
}
printf("max=%d-%d\n", index, max);
printf("tmax=%d-%d\n", tindex, tmax);
}