我有一个完美的适用于数字列表的排序算法,可以将数字从小到大排序。现在我需要修改这个算法,使其能够接受元组列表作为参数。
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) 该算法比较每个数字的第一个数字,并在按第一个数字排序后,然后比较第二个数字。以此类推,直到最后一个数字。因此,它不是比较数字,而是比较所有元组的第一个数字,然后是第二个数字,以此类推。