Forum Informatica Unict

LAUREA MAGISTRALE => Linguaggi di Programmazione, 9 CFU => Topic started by: ossacolsale on 31-03-2012, 19:20:10



Title: Quick Sort in Scheme (II)
Post by: ossacolsale on 31-03-2012, 19:20:10
Ecco la mia implementazione (come pivot uso il primo elemento della lista e la funzione "merge" è la stessa che abbiamo definito per il MergeSort):

(define (quicksort ls cond?)
  (if (or (null? ls) (null? (cdr ls)))
      ls
      (merge (quicksort (partiziona <= (car ls) (cdr ls)) cond?)
              (cons (car ls) (quicksort (partiziona > (car ls) (cdr ls)) cond?)) cond?)))

(define (partiziona cond? pivot ls)
  (cond ((null? ls) ls)
      ((cond? (car ls) pivot)
             (cons (car ls) (partiziona cond? pivot (cdr ls))))
             (else (partiziona cond? pivot (cdr ls)))))

Se ne avete scritto qualche altra versione la confronto con piacere.
Fatto ciò mi disapplico da Scheme...

Saluti.
gm