Geometria Computacional
2013.1
Algoritmos de Ordenação:
Quicksort
Ismália Santiago
3
Conteúdo
1. Introdução
2. Descrição
2.1. O algoritmo
2.2. Funcionamento de Partition
3. Estudo da Complexidade
 Pior ca...
4
1. Introdução
 Método de ordenação rápido e eficiente
 Proposto por Sir Charles Antony Richard Hoare em
1960 e publica...
5
2. Descrição
 O funcionamento do Quicksort resume-se a
dividir o problema de ordenar um vetor de n
posições em dois out...
6
2.1. O algoritmo
Quicksort(A, p, r)
1 se p < r então
2 q  Partition (A, p, r)
3 Quicksort(A, p, q-1)
4 Quicksort(A, q+1...
7
2.2. Funcionamento de Partition
 (a) O arranjo inicial e as configurações
de variáveis
 (b) O valor 2 é “trocado com e...
8
3. Estudo da Complexidade
 Pior caso
 Tempo de execução: O(n²)
 Acontece quando o particionamento não é balanceado ou...
9
3. Estudo da Complexidade
 Melhor caso
 Tempo de execução: O(n lgn)
 Acontece quando as partições têm sempre o mesmo ...
10
4. Análise
 Vantagens
 Ótima opção para ordenar arquivos grandes
 Necessita apenas de uma pequena pilha como memória...
11
5. Referências
 CORMEN, Thomas H.; LEISERSON, Charles
E.; RIVEST, Ronald L.; STEIN, Clifford;
Introduction to Algorith...
Upcoming SlideShare
Loading in …5
×

Quicksort

805 views

Published on

Slides feitos para a disciplina de Geometria Computacional (CK0173 - Modelagem em Computação Gráfica II), ofertada pelo Departamento de Computação da Universidade Federal do Ceará.

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
805
On SlideShare
0
From Embeds
0
Number of Embeds
157
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Quicksort

  1. 1. Geometria Computacional 2013.1
  2. 2. Algoritmos de Ordenação: Quicksort Ismália Santiago
  3. 3. 3 Conteúdo 1. Introdução 2. Descrição 2.1. O algoritmo 2.2. Funcionamento de Partition 3. Estudo da Complexidade  Pior caso  Melhor caso 4. Análise  Vantagens  Desvantagens 5. Referências Geometria Computacional
  4. 4. 4 1. Introdução  Método de ordenação rápido e eficiente  Proposto por Sir Charles Antony Richard Hoare em 1960 e publicado em 1962 após uma série de refinamentos  Dividir e conquistar  Método de ordenação interna, ou seja, não necessita de uma memória secundária para o processo (a ordenação é feita na memória principal do computador) Geometria Computacional
  5. 5. 5 2. Descrição  O funcionamento do Quicksort resume-se a dividir o problema de ordenar um vetor de n posições em dois outros menores:  Dividir: O array A[p..r] é particionado em dois subarrays (possivelmente vazios) A[p..q-1] e A[q+1..r] • Cada elemento de A[p..q-1] é menor ou igual a A[q], que, por sua vez, é igual ou menor a cada elemento de A[q+1..r]  Conquistar: O dois subarrays A[p..q-1] e A[q+1..r] são ordenados por chamadas recursivas a quicksort  Combinar: Os subarrays que foram ordenados localmente são combinados e produzem a solução final Geometria Computacional
  6. 6. 6 2.1. O algoritmo Quicksort(A, p, r) 1 se p < r então 2 q  Partition (A, p, r) 3 Quicksort(A, p, q-1) 4 Quicksort(A, q+1, r) Partition(A, p, r) 1 x  A[r] 2 i  p - 1 3 para j  p até r-1 faça 4 se A[j] <= x então 5 i  i + 1 6 troque A[i]  A[j] 7 troque A[i+1]  A[r] 8 retorne i+1 Geometria Computacional Elemento pivô A[p .. q-1] <= pivô < = A[q+1 .. r]
  7. 7. 7 2.2. Funcionamento de Partition  (a) O arranjo inicial e as configurações de variáveis  (b) O valor 2 é “trocado com ele mesmo” e inserido na partição de valores menores  (c) e (d) Os valores 8 e 7 foram acrescentados à partição de valores maiores  (e) Os valores 1 e 8 são permutados, e a partição menor cresce  (f) Os valores 3 e 8 são permutados , e a partição menor cresce  (g) e (h) A partição maior cresce até incluir 5 e 6 e o loop termina  (i) O elemento pivô é permutado de forma a residir entre as duas partições Geometria Computacional
  8. 8. 8 3. Estudo da Complexidade  Pior caso  Tempo de execução: O(n²)  Acontece quando o particionamento não é balanceado ou quando o array de entrada já está completamente ordenado. Geometria Computacional
  9. 9. 9 3. Estudo da Complexidade  Melhor caso  Tempo de execução: O(n lgn)  Acontece quando as partições têm sempre o mesmo tamanho (partições balanceadas). Geometria Computacional
  10. 10. 10 4. Análise  Vantagens  Ótima opção para ordenar arquivos grandes  Necessita apenas de uma pequena pilha como memória extra (altura da pilha não passa de lg(n) se o vetor tiver n elementos)  Complexidade no melhor caso é O(n lgn)  Desvantagens  Não é estável  Tem pior caso de O(n²)  A escolha correta do pivô é essencial para a garantia de eficiência do algoritmo Geometria Computacional
  11. 11. 11 5. Referências  CORMEN, Thomas H.; LEISERSON, Charles E.; RIVEST, Ronald L.; STEIN, Clifford; Introduction to Algorithms. Second Edition.  http://homepages.dcc.ufmg.br/~cunha/te aching/20121/aeds2/quicksort.pdf  http://pt.wikipedia.org/wiki/Quicksort  http://www.ime.usp.br/~pf/algoritmos/au las/quick.html  http://www.decom.ufop.br/menotti/aedI0 82/tps/tp3-sol1.pdf Geometria Computacional

×