; Bubblesort implementation in Scheme
; Author: Pedro Matiello
; Move x'th element from vector V up in the vector until a bigger element is found
(define _bubble
(lambda (V x)
(when (< x (- (vector-length V) 1))
(when (> (vector-ref V x) (vector-ref V (+ x 1)))
(let ((tmp (vector-ref V x))) (vector-set! V x (vector-ref V (+ x 1))) (vector-set! V (+ x 1) tmp) )
(_bubble V (+ x 1))
)
)
V
)
)
; Call _bubble for each position in vector V, from the last to the first
(define _bubblesort
(lambda (V x)
(when (> x -1)
(_bubble V x)
(_bubblesort V (- x 1))
)
V
)
)
; Start bubblesort with the adequate function call to _bubblesort
(define bubblesort
(lambda (V)
(_bubblesort V (vector-length V))
)
)