对Python List 进行 quick sort 竟如此简单明了...

挺让我意外的Python list comprehensions... 简单,自然的List QuickSort实现:
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的那些存储,赋值,等小数据处理操作一不小心性能就被拉下去了... 所以懒惰的我觉得这也算是挺实用的,比如英文姓名排序...

0 comments:

Post a Comment

| More

Twitter Updates