如果只有三个值,您可以使用一个非常简单的函数(下面的伪代码):
def second_smallest (a,b,c):
if a < b:
if b < c:
return b
return c
if a < c:
return a
return c
显然,如果有三个以上的数字,这将变得非常笨拙,但在那时(请参阅 YAGNI),您会将其转换为更通用的解决方案。
那将是:
def second_smallest (list):
if list.size < 2:
throw error "not enough numbers"
if list[0] < list[1]:
first = list[0]
second = list[1]
else:
first = list[1]
second = list[0]
for each index 2 through list.size - 1 inclusive:
if list[index] < first:
second = first
first = list[index]
next for
if list[index] < second:
second = list[index]
return second
这与您的问题中的逻辑基本相同,但需要进行一些预先检查以避免必须表示无穷大(如果您的类型是浮点数但对整数没有那么有用,那就可以了)。
您应该知道通用解决方案还解决了更具体的问题,假设您的三个整数实际上是某种列表结构。如果您只有三个“裸”值,并且您没有专门处理一般情况的任务,那么我将使用上面的第一段伪代码。