首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按方案中的第一个元素对列表进行排序

按方案中的第一个元素对列表进行排序
EN

Stack Overflow用户
提问于 2016-10-15 08:32:57
回答 2查看 1.2K关注 0票数 2

我正在按第一个元素对列表进行排序,例如

(排序(列表'(2 1 6 7)“(4 3 1 2 4 5)”(1 1)

预期输出=> ('( 1 ) '(2 1 6 7)“(4 3 1 2 4 5))

我使用的算法是气泡排序。我修改了它来处理清单。但是,代码不编译。错误是

代码语言:javascript
运行
复制
mcar: contract violation
  expected: mpair?
  given: 4

有人能纠正我的代码并解释一下吗。谢谢

代码语言:javascript
运行
复制
 (define (bubble L)
        (if (null? (cdr L))   
            L    
            (if (< (car (car L)) (car (cadr L)))   
                (list (car L)
                      (bubble (car (cdr L))))   
                (list (cadr L)
                      (bubble (cons (car (car L)) (car (cddr L))))))))

    (define (bubble-sort N L)    
        (cond ((= N 1) (bubble L))   
              (else
               (bubble-sort (- N 1) (bubble L)))))

    (define (bubble-set-up L) 
        (bubble-sort (length L) L))


    (define t3 (list '(2 1 6 7) '(4 3 1 2 4 5) '(1 2 3) '(1 1)))
    (bubble-set-up t3)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-15 10:12:37

我改正了几个错误。至少还有一个错误。考虑L只包含一个元素的情况。

代码语言:javascript
运行
复制
#lang r5rs

(define (bubble L)
  (if (null? (cdr L))
      L    
      (if (< (car (car L)) (car (cadr L)))   
          (cons (car L)
                (bubble (cdr L)))
          (cons (cadr L)
                (bubble (cons (car L) (cddr L)))))))

(define (bubble-sort N L)    
  (cond ((= N 1) (bubble L))   
        (else
         (bubble-sort (- N 1) (bubble L)))))

(define (bubble-set-up L) 
  (bubble-sort (length L) L))


(define t3 (list '(2 1 6 7) '(4 3 1 2 4 5) '(1 2 3) '(1 1)))
(display (bubble-set-up t3))
(newline)
票数 2
EN

Stack Overflow用户

发布于 2016-10-15 08:44:36

(sort (lambda (x y)(< (car x)(car y))) <YOUR_LIST>)怎么样?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40056854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档