为什么“计数排序”不是一种更广泛使用的算法?
- 论坛
- 为什么“计数排序”不是一种更广泛使用的算法?
10 浏览
为什么“计数排序”不是一种更广泛使用的算法?
我正在绘制一些大型学术文件中的字母频率图。作为这个过程的一部分,我正在将这些文件的大片剪报中的字母按字母顺序排序。我正在使用Python的内置的sorted函数,并且开始想知道我是否可以让它更快。然后,我写了下面的函数:
def count_sort(l): items = {'a':0,'b':0,'c':0,'d':0,'e':0,'f':0,'g':0,'h':0,'i':0,'j':0,'k':0,'l':0,'m': 0,'n':0,'o':0,'p':0,'q':0,'r':0,'s':0,'t':0,'u':0,'v':0,'w':0,'x':0,'y':0,'z' :0} for item in l: items[item] += 1 sort_l = [] for key in items: sort_l += key*items[key] return sort_l
在对一个包含10000个字母的文本字符串进行测试时,这段代码比sorted函数快了近20倍。
既然有了如此大的性能提升,为什么这个排序算法不在标准库中呢?