[英]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.