我正在为冒泡排序编写递归代码(通过交换从最小到最大)
我有一个代码只做一次冒泡排序
(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)
但是递归似乎没有发生,因为它只排序一次!
欢迎任何建议,我只是难过!