python中的列表排序算法无法正常工作
我使用以下函数以递增顺序对列表进行排序。但是,虽然我的函数适用于以下列表:python中的列表排序算法无法正常工作,python,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=
[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
def函数_排序(L):
对于范围内的j(len(L)):
min=j
对于范围(j+1,len(L))中的i:
如果L[i]听起来你的列表是由字符串而不是整数组成的,那么你最终会得到排序的元素
通过举例说明,考虑以下内容:
>>> 10 < 2
False
>>> '10' < '2'
True
另外,我建议不要使用min
作为变量名,因为它是一个内置函数。听起来您的列表是由字符串而不是整数组成的,您最终会对元素进行排序
通过举例说明,考虑以下内容:
>>> 10 < 2
False
>>> '10' < '2'
True
另外,我建议不要使用min
作为变量名,因为它是内置函数。为什么不使用内置的.sort()
方法?@Scironic:对我来说,这听起来是一个相当合理的编程练习。鉴于这是一个热门话题,我不能说我理解反对票,合理且表述清晰的问题。@NPE同意反对票,因为这是一个编程练习-如果可以的话。如果不是这样,那么Aribas缺少了一个相当明显的工具。无论哪种方式,如果这是一个练习,我认为应该说明。我运行了它,它完全像intendent一样工作(至少如果你交出一个int列表),为什么不使用内置的.sort()
方法?@Scironic:对我来说,这听起来像是一个相当合理的编程练习。鉴于这是一个主题、合理且表述清晰的问题,我不能说我理解否决票。@NPE同意否决票,因为这是一个编程练习-如果可以的话。如果不是这样,那么Aribas缺少了一个相当明显的工具。无论哪种方式,如果这是一个练习,我认为应该加以说明。我对它进行了一次运行,它的工作方式完全类似于intendent(至少如果你交出一个int列表),或者使用键进行排序,例如L.sort(key=int)
或者使用键进行排序,例如L.sort(key=int)