Я пишу рекурсивный код для пузырьковой сортировки (от меньшего к большему путем замены)
У меня есть код, выполняющий пузырьковую сортировку только один раз.
(define (bubble-up L)
(if (null? (cdr L))
L
(if (< (car L) (cadr L))
(cons (car L) (bubble-up (cdr L)))
(cons (cadr L) (bubble-up (cons (car L) (cddr L))))
)
)
если я помещу список в этот код, он вернет список с наибольшим числом в конце
EX.. (пузырь-вверх ' (8 9 4 2 6 7)) -> ' (8 4 2 6 7 9 )
Теперь я пытаюсь написать код, чтобы сделать (пузырь L) N раз (количество целых чисел в списке)
У меня есть этот код:
(define (bubble-sort-aux N L)
(cond ((= N 1) (bubble-up L))
(else (bubble-sort-aux (- N 1) L)
(bubble-up L))))
(bubble-sort-aux 6 (list 8 9 4 2 6 7)) -> ' (8 4 2 6 7 9)
Но рекурсии, кажется, не происходит, потому что она сортируется только один раз!
Любые предложения приветствуются, я просто в тупике!