gpt4 book ai didi

c - 不使用数组从 n 个数中取最大的三个数

转载 作者:太空宇宙 更新时间:2023-11-04 08:00:12 28 4
gpt4 key购买 nike

我需要在不使用数组、列表之类的结构的情况下从 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;
}
}

关于c - 不使用数组从 n 个数中取最大的三个数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47248231/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com