Racket-按字母升序对字符串列表进行排序
因此,我试图编写自己的排序函数,以字母升序重新排列元素。 例如:Racket-按字母升序对字符串列表进行排序,racket,Racket,因此,我试图编写自己的排序函数,以字母升序重新排列元素。 例如: (check-expect (sort-list (list "ABD" "ABC" "BCE" "ADE") 0) (list "ABC" "ABD" "ADE" "BCE")) 以下是我目前的情况: (define (sort-list lst n) (cond [(empty? lst) empty] [else (cons (cond
(check-expect (sort-list (list "ABD" "ABC" "BCE" "ADE") 0)
(list "ABC" "ABD" "ADE" "BCE"))
以下是我目前的情况:
(define (sort-list lst n)
(cond
[(empty? lst) empty]
[else
(cons
(cond
[(> (substring (first lst) n (+ n 1)) (substring (first (rest lst)) n (+ n 1))) (first (rest lst))]
[else (sort-list (rest lst) (+ n 1))]))]))
有人能帮我修改代码,使其正常工作吗?您可以使用插入排序。我将首先使用helper函数insert,其代码如下所示
(define (insert los sorted-los)
(cond [(empty? sorted-los) (list los)]
[(string<=? los (first sorted-los))
(cons los sorted-los)]
[else (cons (first sorted-los)
(insert los (rest sorted-los)))]))
(check-expect (sort-list (list "ABD" "ABC" "BCE" "ADE"))
(list "ABC" "ABD" "ADE" "BCE"))
(check-expect (sort-list (list "ABF" "ABC" "BCE" "ADE"))
(list "ABC" "ABF" "ADE" "BCE"))
(check-expect (sort-list (list "ABD" "ABC" "BCE" "EFG"))
(list "ABC" "ABD" "BCE" "EFG"))
(check-expect (sort-list (list "ABC" "ABC" "BCG" "ADE"))
(list "ABC" "ABC" "ADE" "BCG"))
为什么将
n
作为排序列表的参数?那是干什么用的?因为您可以在不使用附加参数的情况下重新排列列表。“(排序列表字符串