Я написал быструю сортировку в схеме (ракетка)
#lang racket
(define (quick-sort xs)
(let* ([p (list-ref xs 0)]
[tail (list-tail xs 1)]
[less (filter (lambda (x) (< x p)) tail)]
[greater (filter (lambda (x) (>= x p)) tail)])
(append (quick-sort less) (list p) (quick-sort greater))))
Но когда я попробовал это, я получил эту ошибку:
> (quick-sort (list 99 2 9922))
list-ref: index 0 too large for list: '()
Я новичок в схеме, поэтомуне совсем понимаю, почему list-ref не может получить правильный ввод '(99 2 9922)
Редактировать:
Спасибо.Я заставил это работать.
#lang racket
(define (quick-sort xs)
(let* ([p (first xs)]
[tail (rest xs)]
[less (filter (lambda (x) (< x p)) tail)]
[greater (filter (lambda (x) (>= x p)) tail)])
(if (equal? (length xs) 1)
xs
(append (quick-sort less) (list p) (quick-sort greater)))))