(define bubble-sort
(lambda (lst)
(if (null? lst)
lst
(let ((lst-sorted (reverse (swap-pairs lst))))
(cons (car lst-sorted) (bubble-sort (cdr lst-sorted)))
);end let
);end if
);end lambda
);end define
(define swap-pairs
(lambda (lst)
(cond
( (null? (cdr lst)) lst)
( ( < (car lst) (cadr lst))
(cons (cadr lst)
(swap-pairs (cons (car lst) (cddr lst)))));left < right => swap them
( else (cons (car lst) (swap-pairs (cdr lst))));left > right =>keep the order
);end cond
);end lambda
);end define