擅长:python、mysql、java
<p>第k个元素的搜索是一个众所周知的问题,有一系列的解决方案,可以在大约O(N)时间内解决它,请阅读<a href="https://en.wikipedia.org/wiki/Selection_algorithm" rel="nofollow noreferrer">https://en.wikipedia.org/wiki/Selection_algorithm</a></p>
<p>Python的标准库(从2.4开始)包括<code>heapq.nsmallest()</code>和<code>nlargest()</code>,它们以O(nlogk)时间返回排序列表。你知道吗</p>
<p>就我个人而言,我宁愿用线性O(N)算法来解决你的问题:</p>
<pre><code>topmost = max( a ) # select the largest one
filtered = [i for i in a if i != topmost] # filter it out
second_best = max( filtered ) # here you have it!
</code></pre>