Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang racket
- (define (split _list)
- (define (spliter a b L _len)
- (if (null? L)
- (list a b)
- (if (<= _len (length a))
- (spliter a (append b (list (car L))) (cdr L) _len)
- (spliter (append a (list (car L))) b (cdr L) _len)
- )
- )
- )
- (spliter (list) (list) _list (/ (length _list) 2))
- )
- (define (merge _list1 _list2)
- (define (merger result L1 L2)
- (cond
- ((null? L1) (append result L2))
- ((null? L2) (append result L1))
- (else
- (if (< (car L1) (car L2))
- (merger (append result (list (car L1))) (cdr L1) L2)
- (merger (append result (list (car L2))) L1 (cdr L2))
- )
- )
- )
- )
- (merger (list) _list1 _list2)
- )
- (define (mergesort _list)
- (if (= 1 (length _list))
- _list
- (merge (mergesort (car (split _list)))
- (mergesort (car (cdr (split _list))))
- )
- )
- )
- (mergesort (list 9 5 6 2 41 2 4))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement