- 每次选取第一个元素作为基准,并采用过滤器
filter
将剩余元素中小于等于基准的作为small
部分、剩余元素中大于基准的作为big
部分,然后对small
和big
部分进行快速排序,最后按small-基准-big
的顺序组合成新的列表,直到列表中只有一个元素为止.
(define (quicksort L)
(if (null? L)
'()
(let ((small (quicksort (filter (lambda (x) (<= x (car L)))
(cdr L))))
(big (quicksort (filter (lambda (x) (> x (car L)))
(cdr L)))))
(append small (cons (car L) big)))))