簡體   English   中英

n個數字中最大的三個數字而不使用數組

[英]largest three numbers from n numbers without using array

我需要從n個數字中識別出最大的三個元素,而無需使用數組,類似結構的列表,並且我不應該使用任何排序邏輯。我在C程序中做到了這一點。 有什么辦法可以更有效地做到這一點?

#include <stdio.h>
    int main()
    {
       int n;
       scanf("%d",&n);
       int number;
       scanf("%d",&number);
       int firstMax, secondMax, thirdMax;
       firstMax = secondMax = thirdMax =number;
       for(int i = 1; i<n ; i++){
           scanf("%d",&number);
           if(number > firstMax){
               thirdMax = secondMax;
               secondMax = firstMax;
               firstMax = number;
           }
           else if(number > secondMax){
               thirdMax = secondMax;
               secondMax = number;
           }
           else if(number > thirdMax){
               thirdMax = number;
           }
       }
       printf("%d %d %d",firstMax, secondMax, thirdMax);
       return 0;
    }

您可以從與thirdMax比較開始。 如果這是錯誤的,則無需考慮其他所有條件。

if (number > thirdMax)
{
    if (number > secondMax)
    {
        thirdMax = secondMax;
        if (number > firstMax )
        {
            secondMax = firstMax;
            firstMax = number;
        }
        else
        {
            secondMax = number;
        }
    }
    else
    {
        thirdMax = number;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM