这算是第一个涉及一个比较重要的算法的题目。这一类题目会要求你给出一个数组中的最值,即给出最大值或最小值或两个都要求给出。如果延伸一下,还可以求前n个最大值和前n个最小值。因此这是一个很基础的算法。首先看一下理论结果,然后看一下有没有什么python库函数可以直接调用,最后看一下求前n个最值的方法。
理论上讲
你想找出最大值最小值,至少要遍历一遍所有的数字才可以。这样,时间复杂度就是O(N),不可能再优化。然后是比较次数的问题。如果找一次最大值遍历一次,再找一次最小值再遍历一次,一共是2N次比较。然后如果想改进比较次数,那么就要从能否把这两次遍历合二为一入手。结果当然是可以。最佳比较次数是(3/2)N。对于最佳比较次数,我们可以这么想:
首先把所有数字分成2个一组的形式,这样一共有N/2组。然后在组内有a和b两个数,另有max和min做临时变量,那么可以这样操作:
1 比较a和b (假设a>b)
2 比较a和max,如果a>max,那么a是最大值,更新max;否则max是最大值;
3 比较b和min,如果b= 1 and dollar =< 100):
US_to_CN=input()
for i in range(0,12):
ratio.append(float(US_to_CN.split(' ')[i]))
print("{:.2f}".format(max(ratio)*dollar))
```
参考资料:
1. https://stackoverflow.com/questions/13544476/how-to-find-max-and-min-in-array-using-minimum-comparisons
2. http://blog.csdn.net/cyp331203/article/details/43148987
3. http://blog.csdn.net/ns_code/article/details/28735533
4. http://blog.csdn.net/ns_code/article/details/26966159
5. http://zoeyyoung.github.io/python-dict-list-min-max-value.html
6. https://stackoverflow.com/questions/5320871/in-list-of-dicts-find-min-value-of-a-common-dict-field