擅长:python、mysql、java
<p>在线性时间中,常数空间使用<a href="http://hg.python.org/cpython/file/2.7/Lib/random.py#l276" rel="noreferrer">^{<cd1>}</a>:</p>
<pre><code>from random import random
def shuffle_with_freeze(x):
for i in reversed(xrange(1, len(x))):
if x[i].freeze: continue # fixed
# pick an element in x[:i+1] with which to exchange x[i]
j = int(random() * (i+1))
if x[j].freeze: continue #NOTE: it might make it less random
x[i], x[j] = x[j], x[i] # swap
</code></pre>