Sunteți pe pagina 1din 15

c

u
Q
t
r

s
k

E
D A
O T
D IS
O
T QU

M ON
C

IV

IS

Grupo:
Jssica Neves
Jorge Nunes
Laura Sanches
Renan Arioli Canedo
Stefanie D'Avila Oliveira

O que
?

Quicksort um mtodo de ordenao rpido, inventado por Charles Antony


Richard Hoare em 1960 ao tentar traduzir um dicionrio de ingls para russo,
ordenando as palavras, tendo como objetivo reduzir o problema original em
subproblemas que possam ser resolvidos mais fcil e rapidamente.

A
estratgia

O Quicksort adota a estratgia de diviso e conquista. A estratgia consiste em


rearranjar as chaves de modo que os "menores" precedam as chaves
"maiores. Em seguida o Quicksort ordena as duas sublistas de chaves menores
e maiores recursivamente at que a lista se encontre ordenada.

(a) Fase de Diviso

(b) Fase de
Conquista

O
algoritmo

Inicia-se com a escolha de um elemento da lista, designado piv;


A lista ento 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 posio definitiva);
Recursivamente, repete-se este processo para cada sub-lista;
No final, o resultado uma lista ordenada.

Vantagem
Rpido em sequencias Mdias;
Satisfatria em sequencias grandes;
Sem necessidade de espao adicional para armazenamento;
Considerado o mais eficiente no geral.

Desvantage
m

Complicado para ordenar pequenos vetores;

Se a sequncia j estiver quase na ordem perde muito tempo;


Sua implementao delicada;
No estvel.

EXEMPLO
8

10

Formula para achar o Vetor

Piv = Vetor[(esquerda +
direita) / 2];

i = esquerda, j = direita;
8

Piv
7

while (i <= j){


while (Vetor[i] < pivo){
i++;
}
while (Vetor[j] > pivo){
j--;
}

10

Piv
while (i <= j){
8

10

10

J
8

10

J
4

Piv
I
6

Piv
6

I
1

Piv
I
6

J
9
I

10

4
J

while (Vetor[i] < pivo){


i++;
}
while (Vetor[j] > pivo){
j--;
}
If (i <= j) {
Auxiliar = Vetor[i];
Vetor[i] = Vetor[j];
Vetor[j] = Auxiliar
i++;
j--;
}
}

Piv
while (i <= j){
8

10

10

I
6

10

Lado Direito

Lado Esquerdo
J

while (Vetor[i] < pivo){


i++;
}
while (Vetor[j] > pivo){
j--;
}
If (i <= j) {
Auxiliar = Vetor[i];
Vetor[i] = Vetor[j];
Vetor[j] = Auxiliar
i++;
j--;
}
}

Piv
6
I
2

while (i <= j){


4

J
6

while (Vetor[i] < pivo){


i++;
}
while (Vetor[j] > pivo){
j--;
3

I
2

J
3

}
If (i <= j) {
Auxiliar = Vetor[i];
Vetor[i] = Vetor[j];
Vetor[j] = Auxiliar;
i++;
j--;
}
}
if (esquerda < j){
quickSort(Vetor, esquerda, j);
}
if (i < direita){
quickSort(Vetor, i, direita);
}

Piv

while (i <= j){

3
Piv

J
3

while (Vetor[i] < pivo){


i++;
}
while (Vetor[j] > pivo){
j--;
}
If (i <= j) {
Auxiliar = Vetor[i];
Vetor[i] = Vetor[j];
Vetor[j] = Auxiliar;
i++;
j--;
}
}
if (esquerda < j){
quickSort(Vetor, esquerda, j);
}
if (i < direita){
quickSort(Vetor, i, direita);
}

while (i <= j){

Piv
7

10

Piv
7

9
J

8
J

10
I

10
I

10

while (Vetor[i] < pivo){


i++;
8
}
while (Vetor[j] > pivo){
j--;
}
If (i <= j) {
Auxiliar = Vetor[i];
Vetor[i] = Vetor[j];
Vetor[j] = Auxiliar;
i++;
j--;
}
}
if (esquerda < j){
quickSort(Vetor,
esquerda, j);
}
if (i < direita){
quickSort(Vetor, i,
direita);
}

Finalizado!

10

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

S-ar putea să vă placă și