Just enjoy myself to write quick sort in Scheme.
いろんなところにCやJavaで書かれたQuick sortの例が見られますが、
Schemeの例があまりみたことがないので、試しに作ってみました。
试着用Scheme写了一个Quick sort的小程序。纯属自娱自乐。
C或者Java的例子多见,但是很少见到有LISP的例子。
(define (qsort seq)
(if (null? seq) '()
(let ((piv (car seq)))
(append (qsort (first-half (cdr seq) piv))
(append (list piv) (qsort (second-half (cdr seq) piv)))))))
(define (first-half seq piv)
(if (null? seq) '()
(if (< (car seq) piv)
(cons (car seq) (first-half (cdr seq) piv))
(first-half (cdr seq) piv))))
(define (second-half seq piv)
(if (null? seq) '()
(if (or (> (car seq) piv)
(= (car seq) piv))
(cons (car seq) (second-half (cdr seq) piv))
(second-half (cdr seq) piv))))
No comments:
Post a Comment