python中使用键的插入排序

2024-04-20 01:31:43 发布

您现在位置:Python中文网/ 问答频道 /正文

def insertion_sort2(A):
  for i in range(1,len(A)):
      key = A[i]
      j = i-1
      for j in range(i-1,0,-1):
          if A[j] > key :
              A[j+1] = A[j]
          else:
              A[j+1] = key
              break

  for i in range(1, len(arr)):

    key = arr[i]

    j = i-1
    while j >=0 and key < arr[j] :
        arr[j+1] = arr[j]
        j -= 1
    arr[j+1] = key

你好,我试过这两种方法来做简单的插入排序在c++中它可以工作,但在python中它不工作,但他们都给出了这样的答案 第一个:

[56, 77, 77, 77, 77, 77, 77, 99]

第二个: 甚至不排序

你知道吗 注:第二一个在休息后开始,我没有同时运行它们,我评论了一个,然后运行另一个 你知道吗


Tags: and方法keyinforlenifdef
1条回答
网友
1楼 · 发布于 2024-04-20 01:31:43

首先,在内部循环中,您不必返回数组中的第0个元素。在python的range函数中,范围是在第二个术语之前一次计算的。在放置范围(i-1,-1,-1)时,范围变为i-1到0。 第二,您没有交换两个连续的元素,只是将第(j+1)个元素的值赋给第(j)个元素。但是给第(j-1)个元素赋第j个值呢。 第三,做[j+1]=key没有意义,因为它已经是key了。你知道吗

def insertion_sort2(A):
  for i in range(1,len(A)):
      key = A[i]
      j = i-1
      for j in range(i-1,-1,-1):
          if A[j] > key :
              A[j+1], A[j] = A[j], A[j+1]
          else:
              break

相关问题 更多 >