【问题标题】:Insertion sort program in pythonpython中的插入排序程序
【发布时间】:2021-09-29 11:18:25
【问题描述】:

我实现了插入排序并且它起作用了。但是在使用不同的条件时,我很困惑。我觉得也应该可以正常工作,但它不工作

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&gt;=0 and value&lt;arr[j]: 这里使用 value。为什么我不能使用 arr[i] 代替? 我们已经设置了 value = arr[i]。 这两种情况有何不同?

【问题讨论】:

  • 因为arr[i]可以在循环中改变。

标签: python insertion-sort insertion


【解决方案1】:

在while循环的第一次赋值中,可能满足以下条件:

(j + 1) == i

因此a[i]中的原始值可以被替换

【讨论】:

    【解决方案2】:

    使用 arr[i] 并不安全,因为您要在 while 循环内更改 arr 的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-03
      • 2021-05-02
      • 1970-01-01
      相关资源
      最近更新 更多