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]:此处值<使用arr[j]。为什么我不能使用arr[I]<是否改为arr[j]?我们已经设置了值=arr[i]。这两种情况有何不同?

使用arr[i]<arr[j]是不安全的,因为您正在while循环中更改arr的值。

在while循环中的第一个赋值中,以下条件可能成立:

(j + 1) == i

因此,a[i]中的原始值可以被取代

最新更新