You are on page 1of 27

Bacharelado em Sistemas de Informao

Disciplina: Estrutura de Dados


Professora: Noeli Pimentel
Algoritmos de Ordenao
SUMRIO
Ordenao de Dados

Introduo

Conceitos
Ordenao Interna

Algoritmos
Mtodos de Ordenao

Bublesort

Quicsort
Desen!ol!imento de "#erc$cios
Introduo

Ordenar: processo de rearran%ar um con%unto de


ob%etos em uma ordem ascendente ou descendente&

A ordenao !isa facilitar a recuperao posterior


de itens do con%unto ordenado&

Dificuldade de se utili'ar um cat(logo telef)nico


se os nomes das pessoas no esti!essem
listados em ordem alfabtica&
A maioria dos mtodos de ordenao baseada em
compara*es das c+a!es&
Conceitos Bsicos
Ordenao: Corresponde ao processo de
rearranar um conunto de o!etos em ordem
ascendente ou descendente"
Por e#emplo: uma lista ordenada de forma
crescente i composta de n elementos ser$ de
forma:
i
%
& i
'
& """"""""" & i
n
Conceitos Bsicos
O processo de classificao ( afetado de maneira
decisi)a pelas caracter*sticas do meio no +ual
estaro arma,enados os dados ao serem
classificados"
So !em conhecidos as diferenas e#istentes
entre as mem-rias prim$ria e secund$ria de um
computador"
Algumas caracter*sticas destes dois tipos de
meio de arma,enamento (:
Conceitos Bsicos
.ma das caracter*sticas mem-ria prim$ria:
o fato de que o tempo de acesso a qualquer
um de seus endereos constante e igual para
todos eles, a qualquer instante.
Isto significa que a seqncia na qual so
acessados os dados na memria primria no
afeta o tempo mdio de acesso a um dado, que
constante.
Conceitos Bsicos
O acesso a dados arma,enados em disco:
Para serem processados os dados armazenados
em disco magntico deem antes ser
transferidos para a memria primria, so!re a
qual o processador pode agir diretamente.
"sta transferncia de dados de disco para a
memria primria #e ice$ersa% feita por
!locos.
Conceitos Bsicos

Classificao dos mtodos de ordenao:

Ordenao interna: ar,ui!o a ser ordenado cabe


todo na mem-ria principal&

Ordenao e#terna: ar,ui!o a ser ordenado no


cabe na mem-ria principal&

Diferenas entre os mtodos:

"m um mtodo de ordenao interna. ,ual,uer


registro pode ser imediatamente acessado&

"m um mtodo de ordenao e#terna. os


registros so acessados se,uencialmente ou em
grandes blocos&
Ordenao Interna

/a escol+a de um algoritmo de ordenao interna


de!e ser considerado o tempo gasto pela ordenao&

0endo n o n1mero registros no ar,ui!o. as medidas


de comple#idade rele!antes so:

/1mero de compara*es C(n) entre c+a!es&

/1mero de mo!imenta*es M(n) de itens do


ar,ui!o&

O uso econ)mico da mem-ria dispon$!el um


re,uisito primordial na ordenao interna&

Mtodos de ordenao in situ so os preferidos&


Ordenao Interna
Classificao dos m(todos de ordenao interna:

/(todos simples:

Ade,uados para pe,uenos ar,ui!os&

2e,uerem O3n45 compara*es&

Produ'em programas pe,uenos&

/(todos eficientes:

Ade,uados para ar,ui!os maiores&

2e,uerem O3n log n5 compara*es&

6sam menos compara*es&

As compara*es so mais comple#as nos


detal+es&

Mtodos simples so mais eficientes para


pe,uenos ar,ui!os&
Algoritmos de Ordenao

Ordenao por 0roca:


- Mtodo da Bolha (Bublesort);
- Mtodo de troca e partio (Quicksort);

Ordenao por Insero:


- Insero Direta;
- Mtodo dos Incrementos Decrescente (Shellsort);

&rdenao por 'eleo


- Mtodo de seleo Direta;
- Mtodo de Seleo em !r"ore (#eapsort)
Algoritmos de Ordenao
Ordenao por 0roca
Algoritmos de Ordenao
Ordenao por 0roca

/(todo da Bolha
1!u!lesort2
Mtodo da Bolha
.m dos mais conhecidos3 mas um dos piores"
Consiste em comparar cada elemento com o
pr-#imo 1)4i5 com )4i 6 %52 e permut$7los sempre
+ue esti)er fora da ordem" 8uando se der uma
passada se +ue haa +ual+uer troca3 o )etor estar$
ordenado"
Mtodo da Bolha
O R D E N A
O R D E N A
O D R E N A
O D E R N A
O D E N R A
O D E N A R
$
%
& '
(
)
()aes iniciais*
i + ,
i + -
i + .
i + /
i + 0
i + ,
i + -
i + .
i + /
i + 0
Mtodo da Bolha
void bubblesort(int n, int v[])
{
int aux, j, pass;
for(pass = 0; pass < n-1; pass++) {
for (j = 0; j < n-pass-1; j++)
if (v[j] v[j+1]) {
aux = v[j];
v[j] = v[j+1];
v[j+1] = aux;
!
!
!
Algoritmo Mtodo da Bolha Simples
Mtodo da Bolha !"emplo
9 % ' : ; < =
>
'< ;? :@ %' <@ ?= ::
Algoritmo Mtodo da Bolha Melhorado
void bublesort" (int n, int v[])
{
int aux, j, pass, tro#ou = 1;
for (pass = 0; pass < n-1 $$ tro#ou; pass++) {
tro#ou = 0;
for (j = 0; j < n-pass-1; j++)
if (v[j] v[j+1]) {
tro#ou = 1;
aux = v[j];
v[j] = v[j+1];
v[j+1] = aux;
!
!
!
Algoritmos de Ordenao
Ordenao por 0roca

8uicAsort
#uic$sort
B o algoritmo de ordenao interna mais r$pido
+ue se conhece para uma ampla )ariedade de
situaCes3 sendo pro)a)elmente mais utili,ado do
+ue +ual+uer algoritmo"
Criado em %D=9 por Eoare3 pu!licado em %D='
ap-s refinamentos"
#uic$sort
"1emplo*
& * D + , 2
- 3 4 + , .
- D * + , .
$
%
& '
(
)
()aes iniciais*
Pi5 + 4
oid 6uic7sort#int 89, int esq, int dir%
: int sala;
int i + esq;
int < + dir;
int p + 8#i=<% > .9; >> pi5 o ponto mdio
do :
?)ile #8i9 @ p% >>compara a esquerda do pi5
i==;
?)ile #p @ 8<9% >>compara a direita do pi5
<$$;
if #i @+ <% >> encontrou par para troca
:
sala + 8i9;
8i9 + 8<9;
8<9 + sala;
i==;
<$$;
A
A ?)ile#i @+ <%;
if #esq @ <%
6uic7sort #, esq, <%;
if #i @ dir%
6uic7sort#, i, dir%; A
#uic$sort
#uic$sort !"emplo
9 % ' : ; <
>
'< ;? :@ %' <@ ?=
#uic$sort
O m(todo 8uicAsort ( muito eficiente para ordenar
ar+ui)os de dadosF
Necessita de pilha como mem-ria au#iliarF
B ineficiente para ar+ui)os $ ordenados3
+uando a escolha do pi)G ( inade+uadaF
O algoritmo consome tempo proporcional a
O(nlog(n)) em m(dia e a O(n) no pior caso"
Resumo
Bu!!le sort
7 8uando dois elementos esto fora de ordem3 tro+ue7
os de posio at( +ue o i7(simo elemento de maior
)alor do )etor sea le)ado para as posiCes finais do
)etorF
7 continue o processo at( +ue todo o )etor estea
ordenado
Resumo
8uicA sort
I Colo+ue um elemento ar!itr$rio #3 o pi)G3 em sua
posio A
I chame recursi)amente o algoritmo para ordenar os
1su!72)etores )4953 """ )4A %5 e )4A6%53 """3 )4n %5
I continue at( +ue os )etores +ue de)em ser
ordenados tenham 9 ou % elemento"
Re%er&ncias Bi'liogr%icas
7I8IA/I. /i!io& Proeto de Algoritmos : com
Implementao em Pascal e C&
9aldemar Celes. 2enato Cer,ueira. :os ;ucas
2angel. Introduo a Estruturas de Dados.
"ditora Campus
JEOJIKOJJ. P&. Projeto de Algoritmos em
<<<&ime&usp&br=>pf=algoritmos

You might also like