编辑:有人正在阅读这篇文章的奇怪变化,我想添加最后一件事。假设有问题的三个值已经在内存中并且它们没有改变,我计算出不少于 14 条指令来实现这一壮举。
如果有人可以的话,我非常喜欢这一点。
[顶部编辑结束]
问题很简单。我有三个整数值,我需要找到最大和最小的。最大我的意思不是最小或介于两者之间,反之亦然。
由于无法在网上找到“优质解决方案”,我不得不自己尝试。
if(a > b) {
if(a > c) {
high = a;
if(b > c) {
low = c;
}
else {
low = b;
}
}
else {
if(b > c) {
high = b;
low = c;
}
else {
high = c;
low = b;
}
}
}
else if(a > c) {
if(b > c) {
high = b;
low = c;
}
else {
high = c;
low = b;
}
}
else {
low = a;
if(b > c) {
high = b;
}
else {
high = c;
}
}
假设我没有犯任何错误,这应该使用三个条件来解决问题。
假设它按预期工作,我实际上对我的努力很满意,但是我的目的是找到最有效的算法,所以我现在问你那是什么。
最好的祝福。
编辑:我已经审查了迄今为止提出的解决方案,它们都很好。
到目前为止我最喜欢的。
if(a>b) {
max = a;
min = b;
}
else {
max = b;
min = a;
}
if(c>max)
max = c
else if(c< min)
min = c
2-3个信号和2-3个条件句,如果我没记错的话。这很让人佩服。
上面的小修改,使用'a'作为'min'的别名。
if(a>b) {
max = a;
a = b;
}
else {
max = b;
}
if(c>max)
max = c
else if(c< a)
a = c
如果只有一种简单的方法来交换变量......好吧,我唯一能想到的是可以消除对“max”的需要,至少在 C 和 C 派生中,肯定不会有效,除了在内存使用方面,我可以多花 4 个字节。;)