我试图说服自己,计数排序比Python中的排序方法执行得更快。然而,调用排序的内置函数似乎更快,即使对于像1000万个元素这样的大型输入也是如此。我能做些什么来加快计数排序?你知道吗
我生成一个小写字母列表,将示例简化为26个唯一值:
letters = [random.choice(string.ascii_lowercase) for i in range(10000000)]
然后我对计数排序执行以下操作:
def sorted_count(letters):
counts = [0] * 26
for letter in letters:
counts[ord(letter) - 97] += 1
out = [None] * len(letters)
j = 0
for i in range(len(counts)):
while counts[i] > 0:
out[j] = chr(i + 97)
counts[i] -= 1
j += 1
return out
即使在10000000个元素上,对sorted(letters)
的调用也要快4倍。
我怎样才能提高我那类人的速度?你知道吗
而不是在最后的forloop中使用while循环。 你可以简单的使用
下面是一个修改后的函数,它比建议的函数快3倍,比
sorted
快两倍:它输出:
相关问题 更多 >
编程相关推荐