所以基本上我想知道如何反转计数排序。这是我找到的代码:
def countingSort(myList):
maxValue = 0
for i in range(len(myList)):
if myList[i] > maxValue:
maxValue = myList[i]
buckets = [0] * (maxValue + 1)
for i in myList:
buckets[i] += 1
i = 0
for j in range(maxValue + 1):
for a in range(buckets[j]):
myList[i] = j
i += 1
return myList
if __name__ == '__main__':
sortedList = countingSort([1,23,4,5,6,7,8])
print(sortedList)
所以我决定将第16行改为:
i -= 1
结果非常接近,但我知道:
[1, 23, 8, 7, 6, 5, 4]
我的问题是,出于某种原因,1在23之前。我尝试恢复一些其他符号,但通常会导致越界错误。有什么办法解决这个问题吗
反转
j
迭代的范围,从高数值开始,然后以低数值结束:用
i -= 1
写的是索引0,-1,-2,-3等。也就是说,你在前面写最小的数字(1),然后从后面向后写剩余的数字。您可以从i = -1
开始使用它相关问题 更多 >
编程相关推荐