一、 具体要求:
二、 两种实现
1. 时间复杂度为 O(n²)
这里的n代表列表里的元素个数,当我们用列表里的每个元素和其他所有元素比较的时候,我们就需要比较n的平方次才能找到最小值。
def getMin(source_list):
#两层循环,数量级是n²
for i in range(len(source_list)):
for j in range(len(source_list)):
#拿第i个数,和其他所有的数进行比较,如果遇到比自己小的,
#就说明自己不是最小的,也就不用继续比下去了,break退出当前循环
if source_list[i] > source_list[j]:
break
#如果没有从break出口出去,就说明没有遇到比自己小的
#自己就是最小的,所有要返回当前数字
else:
return source_list[i]
2. 时间复杂度为O(n)
设置一个用于存储最小值的变量min_num,先将它设置为列表里的第一个元素,然后往下遍历,遇到比当前的min_num小的,就把min_num替换为这个更小的数,这样从头到尾遍历了一遍以后,就找出最小值了。只遍历一次,所以时间复杂度是n。
def getMin2(source_list):
#min_num初始化为列表里的头一个元素
min_num = source_list[0]
for i in range(1,len(source_list)):
#遍历的过程中,遇到更小的,就更换min_num保存的数值
if source_list[i]<min_num:
min_num = source_list[i]
return min_num