50.1.5
by Rodolfo Carvalho
Update scripts. Now merge-sort.rkt is a bit cleaner. Add rackunit tests. |
1 |
#lang racket/base |
2 |
(require ;racket/list |
|
3 |
rackunit) |
|
4 |
||
5 |
(provide list-merge) |
|
6 |
||
7 |
;; Merge two sorted list into a sorted list
|
|
8 |
(define (list-merge a b) |
|
9 |
(cond |
|
10 |
;[(empty? a) b]
|
|
11 |
;[(empty? b) a]
|
|
12 |
[(zero? (length a)) b] |
|
13 |
[(zero? (length b)) a] |
|
14 |
[else (if (< (car a) (car b)) |
|
15 |
(cons (car a) (list-merge (cdr a) b)) |
|
16 |
(cons (car b) (list-merge a (cdr b))))])) |
|
17 |
||
18 |
(check-equal? (list-merge '(1 10 20 30) '(2 9 15 25 42 56)) |
|
19 |
'(1 2 9 10 15 20 25 30 42 56)) |