13.04.2013 Views

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

Escolher o pivô<br />

2.3. Complexida<strong>de</strong> média<br />

• Partition combina os primeiros dois passos do Quicksort..<br />

• Operações relevantes: Número <strong>de</strong> comparações entre chaves!<br />

• O <strong>de</strong>sempenho <strong>de</strong> Partition <strong>de</strong>pen<strong>de</strong> da escolha do pivô.<br />

• Dois exemplos<br />

– Escolhe o primeiro elemento.<br />

– Escolhe o maior dos primeiros dois elementos.<br />

• Vamos usar a segunda opção.<br />

Complexida<strong>de</strong> <strong>de</strong> particionar<br />

• O tamanho da entrada é n = r − l + 1<br />

• Depen<strong>de</strong>ndo da escolha do pivô: precisa nenhuma ou uma comparação.<br />

• O laço nas linhas 4–9 tem n − 1 iterações.<br />

• O trabalho no corpo do laço é 1 = Θ(1) (uma comparação)<br />

• Portanto temos a <strong>complexida<strong>de</strong></strong> pessimista<br />

Quicksort<br />

cp[Partition] = n − 1 = Θ(n) (Primeiro elemento)<br />

cp[Partition] = n − 1 + 1 = n = Θ(n) (Maior <strong>de</strong> dois).<br />

Algoritmo 2.11 (Quicksort)<br />

Entrada Índices l, r e um vetor a com elementos al, . . . , ar.<br />

Saída a com os elementos em or<strong>de</strong>m não-<strong>de</strong>crescente, i.e. para i < j temos<br />

ai ≤ aj.<br />

55

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

Saved successfully!

Ooh no, something went wrong!