寻找最大最小¶
在数组中同时找出最小和最大
算法描述:如果n是奇数,最小和最大初始化为第一个元素,
如果是偶数,先对前两个元素比较,决定最小和最大初值。
def minMax(A):
n = len(A)
if n % 2 == 0:
lastMin, lastMax = (A[0], A[1]) if A[0] < A[1] else (A[1], A[0])
else:
lastMin = lastMax = A[0]
for i in range(0, (n + 1)//2-1):
tmp1 = A[2*i + 1]
tmp2 = A[2*i + 2]
tmpMin, tmpMax = (tmp1, tmp2) if tmp1 < tmp2 else (tmp2, tmp1)
lastMin = lastMin if lastMin < tmpMin else tmpMin
lastMax = lastMax if lastMax > tmpMax else tmpMax
return lastMin, lastMax
if __name__ == '__main__':
print(minMax([4, 23, 65, 22, 12, 4, 1, 1, 256, 34, 27]))
这一版本确实比一个个遍历并分别和最大最小比较要快