Advertisement
Guest User

Untitled

a guest
Apr 15th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.61 KB | None | 0 0
  1. (define (partition pivot xs)
  2.   (define (part-it xs smaller greater)
  3.     (cond [(null? xs) (cons smaller greater)]
  4.           [(< (car xs) pivot) (part-it (cdr xs) (append smaller (list (car xs))) greater)]
  5.           [else (part-it (cdr xs) smaller (append greater (list (car xs))))]))
  6.   (part-it xs null null))
  7.  
  8. (define (quicksort xs)
  9.   (cond [(null? xs) xs]
  10.         [else (let* ((after-part (partition (car xs) (cdr xs)))
  11.                      (smallers (car after-part))
  12.                      (greaters (cdr after-part)))
  13.                 (append (quicksort smallers) (list (car xs)) (quicksort greaters)))]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement