Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,15 @@
|
|||
#lang racket
|
||||
|
||||
(define (merge xs ys)
|
||||
(cond [(empty? xs) ys]
|
||||
[(empty? ys) xs]
|
||||
[(match* (xs ys)
|
||||
[((list* a as) (list* b bs))
|
||||
(cond [(<= a b) (cons a (merge as ys))]
|
||||
[ (cons b (merge xs bs))])])]))
|
||||
|
||||
(define (merge-sort xs)
|
||||
(match xs
|
||||
[(or (list) (list _)) xs]
|
||||
[_ (define-values (ys zs) (split-at xs (quotient (length xs) 2)))
|
||||
(merge (merge-sort ys) (merge-sort zs))]))
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
#lang racket
|
||||
|
||||
(define (merge-sort xs)
|
||||
(merge* (map list xs)))
|
||||
|
||||
(define (merge* xss)
|
||||
(match xss
|
||||
[(list) '()]
|
||||
[(list xs) xss]
|
||||
[(list xs ys zss ...)
|
||||
(merge* (cons (merge xs ys) (merge* zss)))]))
|
||||
|
||||
(define (merge xs ys)
|
||||
(cond [(empty? xs) ys]
|
||||
[(empty? ys) xs]
|
||||
[(match* (xs ys)
|
||||
[((list* a as) (list* b bs))
|
||||
(cond [(<= a b) (cons a (merge as ys))]
|
||||
[ (cons b (merge xs bs))])])]))
|
||||
Loading…
Add table
Add a link
Reference in a new issue