繁体   English   中英

在python中使用Key进行插入排序

[英]Insertion Sort in python using Key

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]

第二个:甚至不排序

注意:第二个在break后开始,我没有同时运行它们,我注释掉一个然后运行另一个

首先,您不会在内循环中到达数组中的第 0 个元素。 在 python 的 range 函数中,范围在第二项之前计数到 1。 在放置 range(i-1,-1,-1) 时,范围变为 i-1 到 0。其次,您没有交换两个连续的元素,只是将第 (j) 个元素的值分配为 (j+1)th元素。 但是如何将第 j 个值分配给第 (j-1) 个元素。 第三,执行 A[j+1] = 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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