08.02.2015 Views

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

notas de aula -<br />

Jerônimo C. Pellegrini<br />

13.3.4.2 Clonagem de processos<br />

13.3.5 Exemplos<br />

13.3.5.1 Quicksort em Termite <strong>Scheme</strong><br />

Os procedimentos partition!!, randomized-partition!! e quicksort-sub! são a tradução<br />

do Quicksort (<strong>com</strong>o apresentado no livro de Thomas Cormen e outros [20]) para <strong>Scheme</strong>.<br />

O procedimento partition!! particiona um vetor para o Quicksort: vec é o vetor, p é<br />

o elemento inicial e r é o elemento final. Somente o subvetor [p..r] será particionado.<br />

O valor retornado pelo procedimento é a posição do pivô (que antes da chamada do<br />

procedimento era o primeiro elemento).<br />

( define partition !!<br />

( lambda ( vec p r)<br />

( let ((x ( vector-ref vec r))<br />

(i (- p 1)))<br />

(do ((j p (+ j 1)))<br />

((= j r))<br />

( cond ((

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!