擅长:python、mysql、java
<p>你可以通过一些小的调整来减少几秒钟的时间。在</p>
<pre><code>def main():
nbValues = int(input())
values = [int(x) for x in input().split()]
for loop in range(nbValues):
idMax = 0
maxv = -2**64 # Not perfect
for idValue in range(nbValues):
v = values[idValue]
if v > maxv:
idMax = idValue
maxv = v
print(values[idMax], end = ' ')
values[idMax] = values[nbValues- 1]
nbValues = nbValues - 1
main()
</code></pre>
<p>我做了两个小改动。在</p>
<ol>
<li><p>我把整个代码块包装在一个函数中。函数块内的代码比顶层的代码快,因为变量查找可以通过索引而不是在全局字典中查找变量名来完成。改进:我的电脑速度提高了60%。</p></li>
<li><p>然后,我通过在局部变量中缓存当前的最大值来减少数组访问的次数。这又使速度提高了15%。</p></li>
</ol>
<p>我尝试使用<code>array</code>模块,但它没有提供进一步的好处。我并不惊讶,因为访问数组对象中的整数需要堆分配。在</p>
<p>一般来说,Python开发人员并不关心优化Python来处理这类代码,他们已经提供了很好的理由。如果不使用内置函数,我不会期望有任何进一步的改进。例如,下面的代码在我的系统上是C版本的3倍,并且与Python程序员编写代码的方式相匹配。在</p>
^{pr2}$
<p><strong>建议:</strong>减小输入大小。将数组大小减半可以免费提高300%的速度。在</p>