Scheme 按升序排列三个数字
我昨天回到家,决定尝试编写一个方案程序,将三个数字按升序排序。这就是我想到的:Scheme 按升序排列三个数字,scheme,Scheme,我昨天回到家,决定尝试编写一个方案程序,将三个数字按升序排序。这就是我想到的: (define a 3) (define b 2) (define c 1) (define temp 0) (cond ( (> a c) (set! temp c) (set! c a) (set! a temp)) ( (> b c) (set! temp c) (set! c b) (set! b temp)) ( (> a b) (set! temp b) (s
(define a 3)
(define b 2)
(define c 1)
(define temp 0)
(cond
( (> a c) (set! temp c) (set! c a) (set! a temp))
( (> b c) (set! temp c) (set! c b) (set! b temp))
( (> a b) (set! temp b) (set! b a) (set! a temp))
( (> b c) (set! temp c) (set! b c) (set! b temp))
)
(display a)
(display b)
(display c)
这是解决问题的有效方法吗?您有什么建议?Scheme有一个内置的排序功能,在某些情况下实际上比我们使用的所有排序算法都要快
(sort < '(5 2 6))
我在您的过程中看到的主要问题是,您只运行了一次交换。这很好,如果你能保证一个总是在中间的两个,但我不确定,它将永远是这样。也设置!这有点难看,当我学习这个计划时,我的教授告诉我不要使用它,因为它是资源密集型的,而且有更好的方法来实现。如果你想这样做的话,我建议你把它们都放在一个列表中,然后对它们进行排序,然后把它们从列表中拉出来。我不知道Scheme,但我可以告诉你,这不是函数式的,而是程序式的。我的想法是用一个函数来交换a的两个变量(a和b)的值,a比b大。不过,我不确定这是否会让这更体面。感谢您花时间阅读本文:)感谢Shades和Color,我不知道
set代码>资源密集型,我会继续调查。还有,如果有人感兴趣的话,我刚刚发现了这个
'(2 5 6)