Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scheme 按升序排列三个数字_Scheme - Fatal编程技术网

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)