【发布时间】:2014-11-06 17:44:39
【问题描述】:
除了 sort() 之外,还有没有其他方法可以找到该行中第二小的整数:
10 12 2 5 15
【问题讨论】:
-
sorted('10 12 2 5 15'.split(),reverse=True)[1] -
排序绝对不是最好的方法,因为它对整个列表进行排序 - 这是浪费。
-
@will 除非您针对您的确切用例评估性能并意外地发现这是最有效的方法。
-
排序是否更有效无关紧要,因为问题要求排序的替代方法。
-
@moooeeeep 没有排序,你只需要遍历列表一次,所以如果列表很长,那么对它进行排序并获取第二个条目将是一个不好的技术。这需要多长时间取决于相对速度,尽管
sort()是用c编写的,所以在python 实现接管之前需要一段时间。对于random.shuffle()'drange(length)列表,至少在我的机器上,它必须有大约 200000 个元素,才能让天真的纯 python 方法击败它。