Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Sorting 按scheme中对的第二个元素对对对的排序列表_Sorting_Scheme - Fatal编程技术网

Sorting 按scheme中对的第二个元素对对对的排序列表

Sorting 按scheme中对的第二个元素对对对的排序列表,sorting,scheme,Sorting,Scheme,我在scheme中有一个过程,它给了我一个成对的列表,我需要按照成对的第二个元素对这个列表进行降序排序。像这样: ((1 . 1) (2 . 3) (3 . 2)) --> ((2 . 3) (3 . 2) (1 . 1)) ((1 . 1) (x . 3) (2 . 1) (3 . 1)) --> ((x . 3) (1 . 1) (2 . 1) (3 . 1)) ((1 . 3) (3 . 4) (2 . 2)) --> ((3 . 4) (1 . 3) (2 . 2))

我在scheme中有一个过程,它给了我一个成对的列表,我需要按照成对的第二个元素对这个列表进行降序排序。像这样:

((1 . 1) (2 . 3) (3 . 2)) --> ((2 . 3) (3 . 2) (1 . 1))
((1 . 1) (x . 3) (2 . 1) (3 . 1)) --> ((x . 3) (1 . 1) (2 . 1) (3 . 1))
((1 . 3) (3 . 4) (2 . 2)) --> ((3 . 4) (1 . 3) (2 . 2))
我不知道该如何使用排序。只需使用内置过程:

(define (sort-desc-by-second lst)
  (sort lst
        (lambda (x y) (> (cdr x) (cdr y)))))

(sort-desc-by-second '((1 . 1) (2 . 3) (3 . 2)))
=> '((2 . 3) (3 . 2) (1 . 1))
这里的技巧是将适当的比较过程作为第二个参数传递给
排序

只需使用内置过程:

(define (sort-desc-by-second lst)
  (sort lst
        (lambda (x y) (> (cdr x) (cdr y)))))

(sort-desc-by-second '((1 . 1) (2 . 3) (3 . 2)))
=> '((2 . 3) (3 . 2) (1 . 1))

这里的诀窍是将一个适当的比较过程作为第二个参数传递给
sort

我认为这会更困难,而且非常简单,谢谢。这个内置过程的复杂性是什么?我这样问是因为我在500000个元素上使用了它,这需要时间。@RohitShinde
O(n log n)
像往常一样,记住它是用于不可变列表的。默认情况下列表是不可变的吗?我使用map函数创建了一对列表,如下所示
(map list list1 list2)
,其中list1和list2分别是500000个元素。我在使用该函数创建的列表上应用了上述过程。那么这会起作用吗?@RohitShinde列表是否不变取决于您使用的解释器。但是排序算法很可能是以一种不变的方式实现的(查看文档)。我认为它会更困难,而且非常简单,谢谢。这个内置过程的复杂性是什么?我这样问是因为我在500000个元素上使用了它,这需要时间。@RohitShinde
O(n log n)
像往常一样,记住它是用于不可变列表的。默认情况下列表是不可变的吗?我使用map函数创建了一对列表,如下所示
(map list list1 list2)
,其中list1和list2分别是500000个元素。我在使用该函数创建的列表上应用了上述过程。那么这会起作用吗?@RohitShinde列表是否不变取决于您使用的解释器。但排序算法很可能是以不变的方式实现的(请查看文档)。