バブルソートに再帰コードを書いています(スワッピングで最小から最大)
バブルソートを1回だけ実行するコードがあります
(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.. (bubble-up ' (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)
しかし、一度しかソートされないため、再帰は発生していないようです!
どんな提案でも大歓迎です、私はただ困惑しています!