Académique Documents
Professionnel Documents
Culture Documents
Introduo
Conceitos
Ordenao Interna
Algoritmos
Mtodos de Ordenao
Bublesort
Quicsort
Desen!ol!imento de "#erc$cios
Introduo
/(todos simples:
/(todos eficientes:
/(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