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