【发布时间】:2017-09-03 05:45:55
【问题描述】:
我有一个排序算法可以完美地处理数字列表。它从最低到最高排序。我需要修改算法,以便我可以将元组列表设置为参数。
def maxList(A):
return(max(num for num in A))
def obtainDigit(num, n):
return (num // 10 ** n) % 10
def linkLists(A):
lAux = []
for sublist in A:
lAux.extend(sublist)
return(lAux)
def generateSublists(A, digit):
subListsAux = [[] for i in range(255)]
for num in A:
subListsAux[obtainDigit(num, digit)].append(num)
return(subListsAux)
def radixSort(A):
iterations = len(str(maxList(A)))
for digit in range(iterations):
sublists = generateSublists(A, digit)
A = linkLists(sublists)
return(A)
元组列表实际上是从图像中获取的一组 RGB 值。使用 PIL 我可以获得以下数据: (100,100,100),(255,0,0),(200,200,200),(0,255,0) 排序后,应该是: (0,255,0),(100,100,100),(200,200,200),(255,0,0) 该算法比较每个数字的第一个数字,然后按第一个数字对它们进行排序,然后比较第二个数字。依此类推,直到最后一个数字。所以,不是比较数字,而是比较元组的所有第一个数字,然后是第二个数字,依此类推。
【问题讨论】:
-
我刚刚看到 sort 属性是如何解决问题的。但是,有没有办法修改上面的算法,以便它也可以解决问题?我真的需要让它与元组一起工作。