繁体   English   中英

python中的插入排序程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM