【发布时间】:2011-08-07 11:19:18
【问题描述】:
我正在自学 Python,但我在一个相对简单的概念上遇到了困难。目标是使用插入排序按升序对列表进行排序。代码如下:
def InsertionSort(A):
for j in range(1, len(A)):
key = A[j]
i = j - 1
while (i >=0) and (A[i] > key):
A[i+1] = A[i] # this is the not understood point
i = i - 1
A[i+1] = key
print A
我不明白加粗的步骤是如何工作的。例如,如果我有一个 [6,5,4,3,1] 的列表并且我进行了第二次迭代,那么我的列表现在不是 [6,6,4,3,1] 吗?我正在分配 A[i+1](在第一种情况下为 5)A[i] 的值(在第一种情况下为 6)。我的5怎么了?我最初对代码的尝试是:
def InsertionSort(A):
for j in range(1, len(A)):
key = A[j]
i = j - 1
while (i >=0) and (A[i] > key):
temp = A[i+1]
A [i+1] = A[i]
A[i] = temp
i = i - 1
A[i+1] = key
print A
这个方法也有效。我不明白为什么第一个也一样。有没有人想一针见血?
【问题讨论】:
-
算法研究!= 给定编程语言的研究。您使用 Python 的事实只是这个问题的附带问题,它是关于理解算法实现的逻辑。
标签: python sorting insertion-sort