Está en la página 1de 26

Ordenao- MergeSort

Diviso e Conquista
preciso revolver um problema com uma entrada grande Para facilitar a resoluo do problema, a entrada quebrada em pedaos menores (DIVIS !" #ada pedao da entrada ento tratado separadamente (#!$%&IS'(" (o final, os resultados parciais so combinados para gerar o resultado final procurado

A Tcnica de Diviso e conquista


( tcnica de diviso e conquista consiste de ) passos*
Diviso* Dividir o problema original em subproblemas menores #onquista* +esolver cada subproblema recursivamente #ombinao* #ombinar as solu,es encontradas, compondo uma soluo para o problema original

A Tcnica de Diviso e conquista


(lgoritmos baseados em diviso e conquista so, em geral, recursivos( maioria dos algoritmos de diviso e conquista divide o problema em a subproblemas da mesma nature.a, de taman/o n0bVantagens*
+equerem um n1mero menor de acessos 2 mem3riaSo altamente paraleli.4veis- Se e5istirem v4rios processadores dispon6veis, a estratgia propiciar4 efici7ncia-

Quando utilizar?
85istem tr7s condi,es que indicam que a estratgia de diviso e conquista pode ser utili.ada com sucesso* Deve ser poss6vel decompor uma inst9ncia em subinst9ncias ( combinao dos resultados dever ser eficiente (trivial se poss6vel" (s subinst9ncias devem ser mais ou menos do mesmo taman/o

Algoritmo enrico
def divisao:e:conquista(5"* if 5 pequeno ou simples* return resolve(5" else* decompor 5 em n con;untos menores 5<,5=,---,5n>= ?<,=,---,n>=@* Ai B divisao:e:conquista(5i" combinar A<,A=,---,An>= em A return A

for i in

A!ordagem com "alanceamento


Ctodos de ordenao que fa.em diviso e conquista
%uicDSort (pior casoE" CergeSort

Principal diferena*
%uicDSort utili.a o conceito de elemento pivF para dividir o problema em subproblemas CergeSort sempre divide o problema de forma balanceada (gerando subproblemas de mesmo taman/o"

MergeSort# $%ecuo
( e5ecuo do CergeSort pode ser facilmente descrita por uma 4rvore bin4ria #ada n3 representa uma c/amada recursiva do CergeSort ! n3 rai. a c/amada inicial !s n3s fol/as so vetores de = ou G n1meros (casos bases"

MergeSort# $%em&lo de $%ecuo


Partio do problema (sempre no meio do vetor"

MergeSort# $%em&lo de $%ecuo 'cont()


#/amada recursiva para primeira partio

MergeSort# $%em&lo de $%ecuo 'cont()


#/amada recursiva

MergeSort# $%em&lo de $%ecuo 'cont()


#/amada recursiva* caso base encontrado

MergeSort# $%em&lo de $%ecuo 'cont()


#/amada recursiva* caso base encontrado

MergeSort# $%em&lo de $%ecuo 'cont()


!perao de merge (intercalao"

MergeSort# $%em&lo de $%ecuo 'cont()


#/amadas recursivas, casos bases e merge (intercalao"

MergeSort# $%em&lo de $%ecuo 'cont()


!perao de merge (intercalao"

MergeSort# $%em&lo de $%ecuo 'cont()


!perao de mergeSort para outra partio

MergeSort# $%em&lo de $%ecuo 'cont()


Hinalmente o ultimo merge(intercalao"

MergeSort * An+lise do Algoritmo


( altura / da 4rvore de e5ecuo !(log n" ( quantidade de opera,es em cada n6vel da 4rvore assintoticamente igual a !(n" Iogo* algoritmo !(n log n"

MergeSort * ,m&lementao -ecursiva

MergeSort * ,m&lementao -ecursiva

MergeSort * ,m&lementao
! procedimento Intercala requer o uso de um segundo arran;o, J, para receber os dados ordenados$ote que no retorno de Cergesort com um arran;o de taman/o =, a resposta encontra>se no arran;o ( (o arran;o original de entrada"$o pr35imo n6vel (arran;o de comprimento G" o resultado da intercalao estar4 no arran;o J-

MergeSort * ,m&lementao
Podemos administrar este problema de duas maneiras*
#opiando a poro do arran;o referente ao resultado de volta para o arran;o ( &tili.ando uma c/ave para indicar a KdireoL dos movimentos de Intercala-

MergeSort * .antagens e Desvantagens


Vantagens
CergeSort !(n log n" ndicado para aplica,es que tem restrio de tempo (e5ecuta sempre em um determinado tempo para n" Pass6vel de ser transformado em est4vel
'omando certos cuidados na implementao da intercalao

H4cil Implementao

Desvantagens
&tili.a mem3ria au5iliar M !(n" $a pr4tica mais lento que %uicDSort no caso mdio

MergeSort /o -ecursivo

$%erc0cio
Dada a sequ7ncia de n1meros* )NOGP=Q !rdene em ordem crescente utili.ando o algoritmo CergeSort, apresentado a sequ7ncia dos n1meros a cada passo do algoritmo-