在python中对列表进行排序的算法无法正常工作

Ari*_*bas 1 python

我使用以下函数以按递增顺序对列表进行排序.但是,虽然我的函数适用于以下列表:[1,5,6,9,3]或者[56,43,16,97,45],它不适用于表单的列表:[20,10,1,3,50].

在这种情况下,计算机似乎认为3> 20和3> 10和3在我得到的"排序"列表中就在50(倒数第二个)之前结束.更准确地说,我得到的结果是:[1,10,20,3,50].

这是我的代码:

def function_sort(L):

    for j in range(len(L)):
        min=j
        for i in range(j+1,len(L)):
           if L[i]<L[min]:
              min = i

        if(min != j):
            L[j],L[min] = L[min],L[j]

            print L
    return L
Run Code Online (Sandbox Code Playgroud)

谁能请你解释一下发生了什么?

NPE*_*NPE 8

听起来你的列表由字符串而不是整数组成,你最终得到的元素按字典顺序排序.

举例来说,请考虑以下事项:

>>> 10 < 2
False
>>> '10' < '2'
True
Run Code Online (Sandbox Code Playgroud)

要解决此问题,请在排序前将元素转换为整数:

L = map(int, L)
Run Code Online (Sandbox Code Playgroud)

PS我建议不要使用它min作为变量名,因为它会影响内置函数min().