Você está na página 1de 5

Analise de Metodologia do Algoritmo Merge Sort na

Utilização da Ordenação de Algoritmos
Bruno Luiz Malisnki1
1
’Área de Ciências Exatas e Tecnologia­ACET– Centro de Estudos Superiores do Pará
(CESUPA)
Caixa Postal 1963 – 66.060­230 – Belém – PA – Brasil
brunoluizmalinski@gmail.com

Abstract.  This article aims to show a brief summary of the operation of a
sorting   algorithm,   Merge   sort.   It   is   understood   that   the   Merge   sort   is   an
algorithm widely used in large arrays, since even being slower in the sorting
of the data compared to other sorting algorithms, Merge sort, and even more
stable. Its operation is summarized in breaking an original array into two
others of smaller sizes, recursively, to obtain arrays of size 1. Returns then
combining the results from the recursion.

Resumo.  Este   Artigo   tem   o   objetivo   de   mostrar   um   breve   resumo   do


funcionamento de um algoritmo de ordenação, o Merge sort. Entende­se que
o Merge sort é um algoritmo muito utilizado em grandes vetores, uma vez que
mesmo sendo mais lento na ordenação dos dados em comparação a outros
algoritmos   de   ordenação,   o   Merge   sort   ainda   e   mais   estável.   Seu
funcionamento resume­se em quebrar um array original em dois outros de
tamanhos menores, recursivamente, até obter arrays de tamanho 1. Retorna
então da recursão combinando os resultados. 

1. Introdução
Uma necessidade antiga do ser humano é a organização das coisas em sua volta.
Seja apenas  uma tarefa  simples,  como organizar uma pilha de papeis, ou uma  para
poder encontra­la com facilidade.   Com   o   passar   do   tempo   essa   necessidade   foi
aumentando   e   as   mane   iras   de   organizar   foram   tomando   vários   rumos.   Muitas
tecnologias foram inventadas para resolve tal problema, muitas outras logo deixaram de
existir por não atender as necessidades e com isso surgem novas outras. O Merge Sort,
foi desenvolvido como uma maneira moderna de organização de algoritmos, o que nos
tempos atuais onde cálculos matemáticos estão fortemente presente em nossas vidas, ele
foi desenvolvido para organização de algoritmos de ordenação.
2. Merge Sort (Ordenação por Mistura)
O merge sort, ou ordenação por mistura, é um exemplo de algoritmo de ordenação do
tipo dividir­para­conquistar. Ele é um algoritmo  recursivo. Sua idéia  básica é muito
fácil, criar uma sequência ordenada a partir de duas outras também ordenadas. Para isso,
ele divide  a  sequência  original  em  pares  de dados, ordena­as, depois  as  agrupa  em
sequências de quatro elementos, e assim por diante, até ter toda a sequência dividida em
apenas duas partes. A Figura 1. Abaixo mostra o funcionamento do algoritmo.

  

               Fugura1. Ilustração de funcionamento do algoritmo Merge Sorte
Os três passos úteis dos algoritmos dividir­para­conquistar, ou divide and conquer, que
se aplicam ao merge sort são:
1. Dividir: Dividir os dados em subsequências pequenas;
2. Conquistar: Classificar as duas metades recursivamente aplicando o merge sort;
3. Combinar: Juntar as duas metades em um único conjunto já classificado.

3.Aplicabilidade
A operação de fusão merge, do mergesort, é muito utiliza na ordenação de um jogo de
cartas, por exemplo, e na busca online, aonde os  dados chegam de blocos em blocos,
são ordenados por qualquer método e depois   fundidos pela mesma. No entanto, esta
abordagem   pode   demandar   muito   tempo   e   espaço   de   armazenamento   se   os   blocos
recebidos forem pequenos em comparação com os dados ordenados. Além de podemos
void lerVet( int *p, int t ){
encontrar uma desvantagem no mergesort que 
int i;   faz uso de um array auxiliar, gerando
um gasto extra de memória (o dobro). Esse consumo de memoria é devido às chamadas
for ( i=0; i 1 ) {
recursivas. Na figura 1, logo abaixo, temos um exemplo de como funciona o algoritmo
meio = t / 2;
Merge Sorte, e como essa ordenação funciona.
mergeSort(p, meio);
mergeSort(p + meio, t ­ meio);
4.Funcionamento: 
merge(p, t);
Abaixo, temos uma demonstração do algoritmo do código Merge Sort
}
}
void main(){
int *p, tam;
printf("Quantidade de elementos do vetor?");
scanf("%d",&tam);
p = (int*) malloc(tam * sizeof(int));
printf("\nDigite o conteudo do vetor:\n");
lerVet(p, tam);

printf("\nConteudo digitado para o vetor:\n");
mostrarVet(p, tam);
printf("\nOrdenando o vetor...\n");
mergeSort(p, tam);

printf("\nConteudo do vetor ja ordenado:\n");
mostrarVet(p, tam);
5. Estudo da Complexidade
De acordo com a ordem de complexidade do algoritmo recursivo no pior caso, no caso
médio e no melhor caso é O(n log n) , pois mesmo no melhor caso onde a lista já esteja
ordenada  o merge sorte ira realizar a divisão e conquista obrigatoriamente.

6. Vantagens e Desvantagens
Uma   de   suas   vantagens   é   a   facilidade   de   implementação   e   é   recomendado   para
ordenação de vetores grandes. Contudo também tem suas desvantagens e podemos citar
como exemplo  o fato  de requerer  o dobro de memória,  pois faz diversas  chamadas
recursivas e exige uma lista de mesmo tamanho, pois durante o processo de ordenação
dos   elementos   que   se   segue   nas   chamadas   recursivas   ele   armazena   os   resultados
temporariamente em outra lista.

7. Conclusão
A organização dos dados é fundamental para manter o controle dos mesmos. Tornar
essa tarefa mais dinâmica é um desafio que a cada dia ganha novas tecnologias  e tão
importante quanto organizar os dados e faze­los de uma maneira que não seja incômoda
para quem o faz e ocupar o menor espaço de tempo possível. O Merge sort é capaz de
fazer essa tarefa de uma maneira simples e eficaz, contudo sua única desvantagem é
ocupar o dobro de memória na execução dos algoritmos, Porém essa desvantagem é
superada na organização dos dados de maneira estável e simples.

8. Referencia
Goodrich, Michel T. and Tamassia Roberto(2002) “ Estrutura de Dados e Algoritmos
em Java”, 2º Edição.
http://www.lcc.ufrn.br/~gilles/edhtml/Ordenacao/node52.htm­acessado   em   15   de
novembro de 2011
http://w3.ualg.pt/~hshah/ped/Aula%2014/merge_final.html­acessado   15   de   novembro
de 2011
http://www.comp.ita.br/~etiene/Ordenacao.pdf­ acessado 113 novembro de 2011
http://www.inf.ufsc.br/~ronaldo/ine5384/18­OrdenacaoDados4.pdf­aessado   em   15   de
novembro de 2011
http://www.decom.ufop.br/menotti/aedI082/tps/tp3­sol1.pdf­acesado   em   15   de
novembro de 2011

Você também pode gostar