字符串的基数排序会导致Python空闲三秒钟,然后崩溃
我试图对一串大写字母应用基数排序,方法是遍历每个索引,然后遍历索引中的每个字符,确定将其放入哪个bucket 我用于排序算法的代码字符串的基数排序会导致Python空闲三秒钟,然后崩溃,python,sorting,crash,radix-sort,Python,Sorting,Crash,Radix Sort,我试图对一串大写字母应用基数排序,方法是遍历每个索引,然后遍历索引中的每个字符,确定将其放入哪个bucket 我用于排序算法的代码 def radixsort(li, maxistrlen): for index in range(maxistrlen): buckets = [[]]*26 for item in li: try: bucket = ord(item[index]) - 65 # All characters
def radixsort(li, maxistrlen):
for index in range(maxistrlen):
buckets = [[]]*26
for item in li:
try: bucket = ord(item[index]) - 65 # All characters are uppercase.
except IndexError: bucket = 0
buckets[bucket].append(item)
li = sum(buckets, []) # Flat the list out.
return li
print(radixsort(['ABC', 'ABD', 'ACQ', 'QRV', 'ZIY', 'BLC', 'AAI'], 3))
运行耗时超过3秒,然后在打印输出时崩溃Python
我似乎无法找出我的算法实现中的错误
非常感谢您的帮助。谢谢 你的程序在这里运行得很好。它产生大量输出,但不到一秒钟就完成了。您的计算机是否缺少内存或其他资源?您是否在调试器中单步执行了代码以查看它在做什么?有人请写一个完整的答案。。。我不能每天回答5次同样的问题。(提示:
[[]]*26
)好吧,我让它在空闲状态下挂起10秒钟,最后崩溃了……没人?唉。对于范围(26)内的uu,请尝试使用bucket=[[]]
而不是bucket=[[]]*26
。