我正在学习如何在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)
答案 0 :(得分:0)
因为j从i的值开始并且下降到0。
如果你想将j增加1 - 你想要做到 - 你的j永远不会达到0所以你的while循环中的j!= 0将一直是真的,这意味着无限循环。
答案 1 :(得分:0)
插入排序示例:
如您所见,插入排序从第二个元素开始,与选择排序不同。因此,您从继续增加i
开始,将j
从位置i
减少到0
。因此,在i
排列中,您将找到的最低元素放在第一位并创建一个大小为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)