擅长:python、mysql、java
<p>选择排序“选择”数据集中最小的元素并将其放在开头,然后在删除最小元素的情况下在列表的其余部分重复。换言之,在选择排序的每个步骤中,我们沿着列表中的每个点移动,并计算出列表中该点的数字。你知道吗</p>
<p>如果我们有列表<code>7 5 2 3 4 6 9 1 8</code>,那么我们的第一步就是把<code>1</code>换成第一位,把<code>2</code>换成第二位,依此类推。我们不必担心列表中的最后一个位置,因为如果我们把其他所有元素都放在正确的位置,最后一个元素就会放在正确的位置,因为它是唯一剩下的元素。你知道吗</p>
<p>有了这段代码,虽然它没有做得那么清楚,但外部for循环遍历列表中的每个点,减去最后一个(<code>len(L) - 1</code>)。一旦我们遍历了循环中的代码一次,我们就在第一个点上放置了正确的数字,然后我们再次尝试填充第二个点,等等。因为我们已经将所有的东西都放在了这个点之前的正确位置上,我们可以假设这个点上正确的东西将是这个位置和第二个点之间最小的东西因此,while循环有助于查找它。然后,我们交换这两个项目。你知道吗</p>
<p>这段代码有点混乱,如果我们将内部while循环重写为for循环,可能更有意义:</p>
<pre><code>def selSort(L):
for i in range(len(L) - 1):
minIndex = i
minValue = L[i]
for j in range(i + 1, len(L)):
if minValue > L[j]:
minIndex = j
minValue = L[j]
temp = L[i]
L[i] = L[minIndex]
L[minIndex] = temp
return L
</code></pre>