如何找出一個數組中第二大的數


思路分析:

可以只通過一遍掃描數組即可找出數組中第二大的數,即通過設置兩個變量來進行判斷。首先定義一個最大變量來存儲數組的最大值,初始值為數組首元素;另一個是第二大變量,用來存儲數組中的第二大數,因其一定不能超過數組中的最大值,所以初始值可設為最小負整數-32767,然后遍歷數組元素。如果數組元素的值比最大變量的值大,則將第二大變量的值更新為最大變量的值,最大變量的值更新為該元素的值;如果數組元素的值比最大變量的值小,則判斷該數組元素的值是否比第二大變量的值大,如果大,則更新第二大變量的值為該數組元素的值。

代碼如下:

#include "stdafx.h"
#include <stdio.h>
const int MINNUMBER = -32767;
int FindSecMax(int data[], int count)
{
    int maxnumber = data[0];
    int sec_max = MINNUMBER;
    for (int i = 1; i < count; i++)
    {
        if (data[i]>maxnumber)
        {
            sec_max = maxnumber;
            maxnumber = data[i];
        }
        else
        {
            if (data[i] > sec_max)
                sec_max = data[i];
        }
    }
    return sec_max;
}
int main()
{
    int array[] = { 2, 5, 6, 7, 7, 8, 98, 3, 458, 5, 6 };
    int length = sizeof(array) / sizeof(array[0]);
    printf("%d\n", FindSecMax(array, length));
    getchar();
    return 0;
}

    效果如圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM