python中使用键的插入排序

python中使用键的插入排序,python,insertion-sort,Python,Insertion Sort,第二个: 甚至不排序 注意:第二个在休息后开始,我没有同时运行它们,我注释掉了一个,然后运行另一个 首先,您不需要在内部循环中找到数组中的第0个元素。在python的range函数中,范围在第二个术语之前计算为uptil。在放置范围(i-1,-1,-1)时,范围变为i-1到0。 其次,您不是交换两个连续的元素,而是为第(j)个元素指定第(j+1)个元素的值。但是给第(j-1)个元素分配第j个值呢。 第三,做[j+1]=键没有意义,因为它已经是键了 [56, 77, 77, 77, 77, 77

第二个: 甚至不排序

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

首先,您不需要在内部循环中找到数组中的第0个元素。在python的range函数中,范围在第二个术语之前计算为uptil。在放置范围(i-1,-1,-1)时,范围变为i-1到0。 其次,您不是交换两个连续的元素,而是为第(j)个元素指定第(j+1)个元素的值。但是给第(j-1)个元素分配第j个值呢。 第三,做[j+1]=键没有意义,因为它已经是键了

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

提到C++,并不能把它变成一个C++问题。请仅标记与您的帖子最相关的内容。如果你点击标签并访问他们的wiki页面,那里通常会有有用的文档帮助你决定标签是否合适。如果你做了
A[j+i]=key
,那么
key
现在位于
A[j+1]
A[i]
,而
A[j+1]
中的任何值都不存在。这就是为什么你最终会在一堆其他值上垃圾发送数字
77
的原因:因为你没有在任何地方交换这些其他值,你只是把它们扔掉。用打印语句或调试程序来处理你的代码。在某个时刻,你会看到你的期望和现实之间的分歧。此时开始调试。如果您在调试的特定内容上遇到问题,请提出一个有针对性的问题。您在第二个函数中有一个输入错误。它应该是
arr[j+1]=key
。我知道这种方法可以像那样交换,但我打算使用key,key在[j+1]=键处每一步都会改变,所以它不需要交换
[56, 77, 77, 77, 77, 77, 77, 99]
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