2012-11-27 2 views
1

나는 쌍의 목록을 제공하는 체계에있는 절차를 가지고 있으며이 목록의 쌍을 두 번째 요소로 내림차순으로 정렬해야합니다. 좋아요 :체계의 쌍의 두 번째 요소에 의한 쌍 목록 정렬

((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)) 

나는 이것을 어떻게 정렬해야하는지 잘 모릅니다.

답변

2

그냥 사용하는 내장 sort 절차 :

(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에 적절한 비교 절차를 통과 트릭.

+0

나는 그것이 더 어려울 것이고 그것이 매우 쉽다라고 생각했다, 고마워. – Ats

+0

@Ats 당신을 환영합니다! :) –

+0

이 inbuilt 절차의 복잡성은 무엇입니까? 나는 이것을 50 만개의 요소에 사용했기 때문에 이것에 시간이 걸린다. –

관련 문제