一重循环找数组的次最值
作者:互联网
注意事项:
- 数组元素全部相同(解决方法:设flag)
核心思想:在找出一个更大的值后保存它的当前值
#include <stdio.h>
//一重循环找数组中第二大的数
//注意:
//1. 数组元素全部相同
int find_sec(int* arr,int n)
{
int i = 1;
int max = arr[0];
int sec = 0;
int flag = 0;
for(i = 1;i<n;i++)
{
//若找到了一个更大值,则说明有次最值否则没有
if(max<arr[i])
{
flag = 1;
sec = max;
max = arr[i];
}
}
if(flag == 1)
return sec;
else {
printf("没有第二大的数\n");
return -1;
}
}
//测试
int main(int argc, char *argv[])
{
int arr[11] = {1,3,2,4,5,5,6,3,7,8,3};
int arr2[4] = {1,1,1,1};
int sec = find_sec(arr2,4);
printf("sec = %d\n",sec);
printf("Hello World!\n");
return 0;
}
标签:arr,int,max,一重,flag,sec,数组,printf,最值 来源: https://blog.csdn.net/weixin_44715313/article/details/113879664