You are on page 1of 8

Universidade de Mogi das Cruzes

Estrutura de Dados e Algoritmos


Aula 06 Algoritmos de Ordenao Interna - Por Distribuio
Algoritmos de Ordenao Interna
Os algoritmos de ordenao interna (em memria) so convencionalmente
baseados em estratgias de comparao ou em estratgias de contagem.
Os Algoritmos de ordenao Interna podem ser classificados como:

Por insero Os algoritmos de insero baseiam-se no


deslocamento de elementos da estrutura frente a um elemento de busca.

Por Seleo A ordenao por seleo parte do princpio de realizar


o isolamento de elementos para posies ordenadas.

Por Troca Os algoritmos de troca so baseados na troca de


posio dos dados, de forma a orden-los.

Por Distribuio O algoritmo de distribuio de chaves funciona


como um ndice de elementos, sendo um bom classificador.

Quick Sort O algoritmo de quick sort o mais rpido que os demais


e baseado na troca e na partio.

Universidade de Mogi das Cruzes


Estrutura de Dados e Algoritmos

Algoritmos de Ordenao Quick Sort

Algoritmo de Ordenao Quick Sort


um algoritmo mais rpido que os demais e baseado na troca e na
partio.
A idia particionar a lista em 3 segmentos: segmento 1, segmento 2 e
segmento 3. Denominaremos o segmento 2 de piv. Normalmente o piv
a parte central da lista (assim escolhido por motivo de eficincia).

304 256 027 009 042 778 813 275 485

Segmento 1

Segmento 2 (Piv)

Segmento 3

Em seguida realizada um movimentao nos elementos da lista de modo a


deixar os elementos menores que o piv no segmento 1 e maiores que o piv
no segmento 3.
Procedemos realizando este mesmo procedimento com o segmento 1 e 3 e
assim por diante at que toda a lista fique ordenada.

Universidade de Mogi das Cruzes


Estrutura de Dados e Algoritmos

Vamos ver um exemplo:


Dado a lista abaixo, orden-la-emos pelo Algoritmo Quick Sort.
a)O primeiro passo a ser realizado separar os segmentos da lista e
encontrar o Piv. Note que uma vez definindo o Piv (ao meio da lista)
automaticamente nos restam outros dois segmentos.
3

Segmento 1

10

Segmento 2 ou Piv

17

12

Segmento 3

O prximo passo consiste em percorrer o segmento 1 a partir esquerda at


encontrar um valor que seja maior (ou igual) o piv.
Segmento 1
3

10

Elemento maior que PIVO a partir da esquerda


Agora temos que percorrer o segmento 3 a partir direita at encontrar um
valor que seja menor (ou igual) o piv.
Segmento 3
6

17

12

Elemento menor que PIVO a partir da direita

Universidade de Mogi das Cruzes


Estrutura de Dados e Algoritmos

Agora temos que trocar os elementos de posio, ou seja, temos que passar
os elementos que so menores que o Piv para o segmento 1 e os que so
maiores para o segmento 3.
Elementos foram trocados

Segmento 1

10

Segmento 2 ou Piv

17

12

Segmento 3

Continuando esse processo, encontramos no segmento 1 o elemento 10


(que maior que o Piv) e no segmento 3 o elemento 6 (que menor que o
Piv) e trocamos novamente a posio deles.

Elementos foram trocados

Segmento 1

10

Segmento 2 ou Piv

17

12

Segmento 3

Continuando nosso procedimento encontraremos no segmento 1 o elemento


7 que na verdade o Piv, pois no existe nenhum elemento no segmento 1
que seja maior que o Piv.
E percorrendo tambm o segmento 3 encontraremos o elemento 7 que

Universidade de Mogi das Cruzes


Estrutura de Dados e Algoritmos
tambm o Piv. Quando chegamos nesta condio (elemento encontrado
de ambos os segmentos igual ao Piv) sabemos que est na hora de parar
esse procedimento.
Mas a seqncia da lista como um todo no est completamente ordenada.
Ela possui a seguinte seqncia at o momento:
3, 4, 6, 5, 7, 10, 17, 8 e 12
Para ordenar a lista temos que aplicar o mesmo processo no segmento 1 e
depois no segmento 3 como se eles fossem um nova lista a ser ordenada.

b) Ordenar o segmento 1 seguindo o mesmo processo:


3

Nosso Piv o elemento 4.


Encontramos no segmento 1 o valor 4 que o prprio piv (pois no existe
elementos maiores que o piv no segmento 1)
Encontramos no segmento 3 o valor 5 que o prprio piv (pois no existe
elementos menores que o piv no segmento 1)
Como chegamos na condio de encontrar o piv em ambos os segmentos
podemos parar o processo nessa lista e passar para a prxima, ou seja,
ordenar os segmentos desta lista.

Universidade de Mogi das Cruzes


Estrutura de Dados e Algoritmos

c) Ordenar o segmento 3 (da ultima lista) seguindo o mesmo processo

Encontramos o piv sendo o elemento 6.


Percorrendo o segmento 1 (que no possui elementos) encontramos o
elemento 6 que o prprio piv.
Percorrendo o segmento 3 encontramos o elemento 5 que menor que o
piv.
Agora precisamos fazer a troca.
Troca-se os elementos
5

Agora se percorrermos os dois segmentos vamos encontrar como elemento


o Piv, ento podemos parar de aplicar o processo nesta lista.
d)Agora temos que voltar e ordenar o segmento 3 da lista original...

10

17

12

Universidade de Mogi das Cruzes


Estrutura de Dados e Algoritmos

Piv= 17
Elemento so segmento 1 = 17 e do segmento 3 = 12, ento troca-se os
elementos.

10

12

17

Agora piv = 12
Elemento do segmento 1 = 12 e elemento do segmento 3 = 8, ento troca-se
os elementos.
10

12

17

Agora piv = 8
Elemento do segmento 1 = 10 e do segmento 3 = 8, ento trocamos.
8

10

12

17

Agora piv = 10 e os elementos de ambos os segmentos so igual ao piv,


ento ordeno os segmentos desta lista.
Como o segmento 3 desta lista j esta ordenado, ele tambm atinge a
condio que determina a parada e como no temos mais nenhum segmento
a ordenar a nossa lista est completamente ordenada.

Universidade de Mogi das Cruzes


Estrutura de Dados e Algoritmos

Lista completamente ordenada


3

10

12

17

Para quem faz isso manualmente parece demorado mas lembre-se que esse
o mtodo mais rpido...

Exerccio:
Ordenar a lista a seguir pelo mtodo de ordenao por Quick Sort.
Mostrar passo a passo a evoluo da ordenao.
Lista: 3 5
3 5

10 7

15

4 14 (ordem crescente)

10 14 7 15

11 (ordem decrescente)

You might also like