from random import randrange
def qsortlist(list):
"""
Quicksort using list comprehensions and randomized pivot
"""
def qsort(list):
if list == []:
return []
else:
pivot = list.pop(randrange(len(list)))
lesser = qsort([l for l in list if l < pivot])
greater = qsort([l for l in list if l >= pivot])
return lesser + [pivot] + greater
return qsort(list[:])
如此清晰,简便的快速排序...虽然性能肯定远不如一般的C,C++之类的实现,但是鉴于这是针对list的排序,应用广阔而方便,python的数字计算能力也不差, 又有不错的随机数生成器。
C的话要提供比较方法,C++的话要用模板类来推广,而我自认为C/C++水平远不及Python解释器. C的那些存储,赋值,等小数据处理操作一不小心性能就被拉下去了...
所以懒惰的我觉得这也算是挺实用的,比如英文姓名排序...
Rekomendasi Game Android Bahasa Indonesia
3 years ago
0 comments:
Post a Comment