其他分享
首页 > 其他分享> > 一重循环找数组的次最值

一重循环找数组的次最值

作者:互联网

注意事项:

  1. 数组元素全部相同(解决方法:设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