4

バブルソートに再帰コードを書いています(スワッピングで最小から最大)
バブルソートを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)

しかし、一度しかソートされないため、再帰は発生していないようです!
どんな提案でも大歓迎です、私はただ困惑しています!

4

2 に答える 2