我从教程中学习了如何在python3中实现插入排序算法,但是我似乎不明白为什么在这段代码中它是"j -= 1“而不是j += 1。
sample1 = [5,3,2,4,6]
def insertion_sort(sample):
print("initial sample: ",sample)
for i in range(1,len(sample)):
j = i
while(j!=0 and sample[j] < sample[j-1]):
sample[j-1],sample[j] = sample[j],sample[j-1]
j -= 1 #why this and not j += 1 instead?
print("sorted sample: ",sample)insertion_sort(sample1)
发布于 2016-07-26 07:05:47
因为j从i的值开始,一直到0。
如果你想要将j增加1 -as -你的j永远不会达到0,所以你的while循环中的j!=0将一直为真,这意味着无限循环。
发布于 2016-07-26 07:08:55
插入排序示例:

如你所见,插入排序从第二个元素开始,与选择排序不同。所以你从继续增加i和减少j开始,从位置i到0。因此,在i的th排列中,您将找到的最低元素放在第一位,并创建一个大小为i的排序数组
def insertion_sort(sample):
print("initial sample: ",sample)
for i in range(1,len(sample)):
j = i #start from i and run till 0.
while(j!=0 and sample[j] < sample[j-1]):
sample[j-1],sample[j] = sample[j],sample[j-1] #swapping if element j-1 > element j to get lowest element on 1st place.
j -= 1 #from element i to element 0
print("sorted sample: ",sample)https://stackoverflow.com/questions/38578629
复制相似问题