Python 如果#条目的插入排序>;9

Python 如果#条目的插入排序>;9,python,Python,我正在尝试使用python实现插入排序。下面是我的代码: import numpy as np N=int(input()) A=input().split() #A=[int(x) for x in input().split()] B_sorted=A.copy() C= A.copy() def inssort(arr): for i in range(1, len(arr)): key = arr[i] j = i-1 while

我正在尝试使用python实现插入排序。下面是我的代码:

import numpy as np
N=int(input())
A=input().split()

#A=[int(x) for x in input().split()]
B_sorted=A.copy()
C= A.copy()
def inssort(arr):
    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 
        
inssort(B_sorted)
for i in range(0,len(A)):
    for j in range(0,len(A)):
        if A[i]==B_sorted[j]:
            C[i]=j+1
            break
        j=j+1
    i=i+1
for x in B_sorted:
    print (x, "",end="")
看起来由于某种原因,在第一次迭代中,j没有为这个特定序列取值0。正如我前面提到的,它对许多其他序列都非常有效


请帮忙。

您正在排序字符串,而不是数字。在词典排序中,
'10'
小于
'2'
。如果您想要正常的数字排序,您需要对解析后的数字进行排序,或者实现自己的自定义比较功能。要测试这种情况,请将
A
替换为
A=list(范围(10,-1,-1))
,然后尝试对其进行排序。它应该按预期的顺序排列,因为列表现在包含数字。哦,该死!那真是个聪明的陷阱!非常感谢你。
10 9 8 7 6 5 4 3 2 1
['10', '9', '8', '7', '6', '5', '4', '3', '2', '1']
['10', '8', '9', '7', '6', '5', '4', '3', '2', '1']
['10', '7', '8', '9', '6', '5', '4', '3', '2', '1']
['10', '6', '7', '8', '9', '5', '4', '3', '2', '1']
['10', '5', '6', '7', '8', '9', '4', '3', '2', '1']
['10', '4', '5', '6', '7', '8', '9', '3', '2', '1']
['10', '3', '4', '5', '6', '7', '8', '9', '2', '1']
['10', '2', '3', '4', '5', '6', '7', '8', '9', '1']
['1', '10', '2', '3', '4', '5', '6', '7', '8', '9']