[英]Insertion sort program in python
我实现了插入排序并且它起作用了。 但是在使用不同的条件时,我很困惑。 我觉得也应该正常工作,但它不起作用
def insertion(arr):
for i in range(1,len(arr)):
value = arr[i]
j=i-1
while j>=0 and value<arr[j]:
arr[j+1]=arr[j]
j=j-1
arr[j+1]= value
arr = [2,4,1,8 ,3,6]
new = insertion(arr)
print("Sorted array by selection sort:")
for i in range(len(arr)):
print(arr[i])
这段代码完美运行。 但我在 while 循环中感到困惑。 while 循环是这样的: while j>=0 and value<arr[j]:
这里使用value<arr[j] 。 为什么我不能使用arr[i]<arr[j]代替? 我们已经设置了value = arr[i] 。 这两种情况有何不同?
使用arr[i]<arr[j]并不安全,因为您正在 while 循环内更改 arr 的值。
在 while 循环中的第一个赋值中,以下条件可能为真:
(j + 1) == i
因此 a[i] 中的原始值可以被替换
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.