You are on page 1of 15

c

i

u
Q
t
r

s
k

E
D A
O T
D IS
O
T QU
É
M ON
C

O

R

D

E

N

A

Ç

Ã

O

 -

D

IV

IS

Ã

O

E

Grupo:
Jéssica Neves
Jorge Nunes
Laura Sanches
Renan Arioli Canedo
Stefanie D'Avila Oliveira

tendo como objetivo reduzir o problema original em subproblemas que possam ser resolvidos mais fácil e rapidamente.O que é? Quicksort é um método de ordenação rápido. . inventado por Charles Antony Richard Hoare em 1960 ao tentar traduzir um dicionário de inglês para russo. ordenando as palavras.

A estratégia consiste em rearranjar as chaves de modo que os "menores" precedam as chaves "maiores”. (a) Fase de Divisão (b) Fase de Conquista .A estratégia O Quicksort adota a estratégia de divisão e conquista. Em seguida o Quicksort ordena as duas sublistas de chaves menores e maiores recursivamente até que a lista se encontre ordenada.

o resultado é uma lista ordenada. . Recursivamente.O algoritmo Inicia-se com a escolha de um elemento da lista. repete-se este processo para cada sub-lista. No final. designado pivô. A lista é então rearranjada de forma que todos os elementos maiores do que o pivô fiquem de um dos lados dele e todos os elementos menores fiquem do outro lado (ficando assim o pivô na sua posição definitiva).

 Satisfatória em sequencias grandes.  Sem necessidade de espaço adicional para armazenamento. .Vantagem  Rápido em sequencias Médias.  Considerado o mais eficiente no geral.

Desvantage m  Complicado para ordenar pequenos vetores.  Se a sequência já estiver quase na ordem perde muito tempo. .  Não é estável.  Sua implementação é delicada.

4 6 .EXEMPLO 8 1 3 9 7 2 10 Formula para achar o Vetor Pivô = Vetor[(esquerda + direita) / 2].

8 I 1 3 9 } Pivô 7 2 while (i <= j){ while (Vetor[i] < pivo){ i++. } while (Vetor[j] > pivo){ j--.i = esquerda. j = direita. } 10 4 6 J .

Pivô while (i <= j){ 8 1 3 9 7 2 10 4 6 10 4 J 8 10 J 4 8 Pivô I 6 1 3 9 7 2 Pivô 6 I 1 3 9 7 2 Pivô I 6 1 3 J 9 I 7 2 10 4 J 8 while (Vetor[i] < pivo){ i++. Vetor[j] = Auxiliar i++. } while (Vetor[j] > pivo){ j--. } If (i <= j) { Auxiliar = Vetor[i]. Vetor[i] = Vetor[j]. j--. } } .

} If (i <= j) { Auxiliar = Vetor[i]. } } . Vetor[i] = Vetor[j]. j--. } while (Vetor[j] > pivo){ j--. Vetor[j] = Auxiliar i++.Pivô while (i <= j){ 8 1 3 4 7 2 6 1 1 3 3 4 4 9 6 10 9 8 10 9 8 J I 6 10 7 2 I J 2 7 Lado Direito Lado Esquerdo J I while (Vetor[i] < pivo){ i++.

direita). i. Vetor[j] = Auxiliar. } if (i < direita){ quickSort(Vetor. j--. 3 I 2 2 J 1 1 3 4 I J 3 4 J I 6 6 7 7 } If (i <= j) { Auxiliar = Vetor[i]. esquerda. Vetor[i] = Vetor[j]. i++.Pivô 6 I 2 1 1 3 3 while (i <= j){ 4 2 7 4 J 6 7 while (Vetor[i] < pivo){ i++. } } if (esquerda < j){ quickSort(Vetor. } while (Vetor[j] > pivo){ j--. j). } .

} while (Vetor[j] > pivo){ j--.Pivô while (i <= j){ 2 1 I J 1 2 3 3 Pivô I J 3 3 4 6 I J 4 6 J I while (Vetor[i] < pivo){ i++. i. } If (i <= j) { Auxiliar = Vetor[i]. Vetor[i] = Vetor[j]. esquerda. i++. j--. } } if (esquerda < j){ quickSort(Vetor. direita). } . } if (i < direita){ quickSort(Vetor. Vetor[j] = Auxiliar. j).

Vetor[j] = Auxiliar. } If (i <= j) { Auxiliar = Vetor[i]. } if (i < direita){ quickSort(Vetor. i++. esquerda. j). j--. Vetor[i] = Vetor[j]. 8 } while (Vetor[j] > pivo){ j--.while (i <= j){ 1 2 3 4 Pivô 7 10 9 8 Pivô 7 8 9 J 7 8 J 10 I 9 10 I 6 7 10 9 while (Vetor[i] < pivo){ i++. } . direita). } } if (esquerda < j){ quickSort(Vetor. i.

1 2 3 4 6 7 8 Finalizado! 9 10 .

edu.Bibliografia http://www.com.br/vantagens-desvantagens-algoritmos-ordenacao-info_16277 / http://www.pdf pwp.br/~cunha/teaching/20121/aeds2/quicksort.ufcg.pt/cc.pdf .ufmg.ehow.ipl.dsc.br/content/ABAAAfL_cAH/quicksort homepages.net.isel/cvaz/Textos/AED/QuickSort.com.html http://www.ebah.br/~pet/jornal/abril2013/materias/historia_da_computacao.dcc.