0

前置条件:len(list) >= 2 的整数列表

后置条件:返回第二小的值。如果列表中存在两个最小值,则返回最小值。

def SecondSmallest(list):
1   smallest = min(list[0], list[1])
2   second_smallest = max(list[0], list[1])
3   i = 2
4   while i < len(list):
5       item = list[i]
6       if item < second_smallest:
7           if item < smallest:
8               second_smallest = smallest
9               smallest = item
10          else:
11              second_smallest = item
12      i += 1
13  return second_smallest

非常感谢。

4

1 回答 1

0

循环不变量是对循环的每次迭代都成立的谓词。请参阅什么是循环不变量?更多细节。

在您的特定情况下,对于每次迭代,1 < i < len(list)都成立。

更正式的定义见:https ://en.wikipedia.org/wiki/Loop_invariant

于 2017-06-02T23:53:22.170 回答