Advertisement
Guest User

Untitled

a guest
Mar 17th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 0.86 KB | None | 0 0
  1. #lang racket
  2.  
  3. (define (split _list)
  4.     (define (spliter a b L _len)      
  5.         (if (null? L)
  6.             (list a b)
  7.             (if (<= _len (length a))
  8.                 (spliter a (append b (list (car L))) (cdr L) _len)
  9.                 (spliter (append a (list (car L))) b (cdr L) _len)
  10.             )
  11.         )
  12.     )
  13.     (spliter (list) (list) _list (/ (length _list) 2))
  14. )
  15. (define (merge _list1 _list2)
  16.     (define (merger result L1 L2)  
  17.         (cond
  18.             ((null? L1) (append result L2))
  19.             ((null? L2) (append result L1))
  20.             (else          
  21.                 (if (< (car L1) (car L2))
  22.                     (merger (append result (list (car L1))) (cdr L1) L2)
  23.                     (merger (append result (list (car L2))) L1 (cdr L2))
  24.                 )
  25.             )
  26.         )
  27.     )
  28.     (merger (list) _list1 _list2)
  29. )
  30. (define (mergesort _list)
  31.     (if (= 1 (length _list))
  32.         _list
  33.         (merge (mergesort (car (split _list)))
  34.                (mergesort (car (cdr (split _list))))
  35.         )
  36.     )
  37. )
  38. (mergesort (list 9 5 6 2 41 2 4))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement