两句话的快排

现在博客正式从aws上迁移到malash的服务器上。嘻嘻,以后再也不用花钱啦~~
然后malash跟我强行装了“用两句Haskell实现快排”的逼。确实感觉到函数式编程无限的想象力。
Haskell如何写,具体忘了,下面是Python的实现,原理类似。

def sort(arr):
    if len(arr) == 0:
        return []
    x = arr.pop(0)
    return sort(filter(lambda a : a < x ,arr)) + [x] + sort(filter( lambda a : a > x, arr))

整个世界清净了,这确实是快排~~

下面是一个不怎么”函数式”的实现,代码还是很简单,并且很直观!

def quicksort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) / 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quicksort(left) + middle + quicksort(right)

发表评论

电子邮件地址不会被公开。 必填项已用*标注