[英]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.