(defun evensplit (alist len) (if (> (length alist) (/ len 2)) (append (evensplit (cdr alist) len) (list (car alist))) (list alist) )) (defun sorter (arglist larger?) (merger (mergesort (car arglist) larger?) (mergesort (cdr arglist) larger?) larger? ) ) (defun merger (listA listB larger?) (cond ((not (and listA listB)) (append listA listB)) ((eval (list larger? (car listA) (car listB))) (cons (car listA) (merger (cdr listA) listB larger?))) (T (cons (car listB) (merger listA (cdr listB) larger?))) ) ) (defun mergesort (sortlist larger?) (cond ((< (length sortlist) 2) sortlist) (T (sorter (evensplit sortlist (length sortlist)) larger?)) ) ) (defun numlarge? (numA numB) (> (- numA numB) 0)) (print (mergesort '(3 9 5 7 6 1 8 0 2 4) 'numlarge?))
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more