Escolar Documentos
Profissional Documentos
Cultura Documentos
Utilização da Ordenação de Algoritmos
Bruno Luiz Malisnki1
1
’Área de Ciências Exatas e TecnologiaACET– Centro de Estudos Superiores do Pará
(CESUPA)
Caixa Postal 1963 – 66.060230 – 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.
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 encontrala 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 dividirparaconquistar. 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, ordenaas, 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 dividirparaconquistar, 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 fazelos 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.htmacessado em 15 de
novembro de 2011
http://w3.ualg.pt/~hshah/ped/Aula%2014/merge_final.htmlacessado 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/18OrdenacaoDados4.pdfaessado em 15 de
novembro de 2011
http://www.decom.ufop.br/menotti/aedI082/tps/tp3sol1.pdfacesado em 15 de
novembro de 2011