Saturday, April 24, 2010

Quick sort in Scheme

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