Você está na página 1de 9

Instituto Superior de Transportes e Comunicações

Algoritmos e Estruturas de Dados


Tema:❖ Merge Sort

Discentes (s):
Ana Luanda
Edson Culpa
Sócrates Andrade
Docente :
Dr.. Inácio Gaspar Ticongolo
Abril, 2020
Introdução
A ordenação é o processo de organizar um conjunto de
elementos seguindo uma determinada ordem. Se a informação
estiver ordenada é possível utilizar algoritmos de pesquisa
mais eficientes. A suma importância da ordenação é
constatada durante o processamento de dados, pois é feita
para facilitar a pesquisa. Ou em maior grau de complexidade
pré ou pós-ordenando sequencias.
Algoritmo MergeSort
Os algoritmos de ordenação recursivos são algoritmos que
usam o princípio de dividir para conquistar, o MergeSort é um
deles. Foi criado por Von Neumann em 1945.
Implementação do MergeSort

1. Dividir o vetor ao meio;


2. Recursivamente ordenar a primeira parte do vetor;
3. Recursivamente ordenar a segunda parte do vetor;
4. Intercalar os dois subvetores (fusão) gerando um vetor
ordenado;
Na figura abaixo ilustra as etapas acima considerando um vetor [5,6,8,3,4,1,2,7]:
Algoritmo MergeSort codificado em java
public static void main(String[] args) { private static void intercalar(int v[],int aux[],int inicio, int meio,int fim){
// array de teste for(int i=inicio; i<=fim; i++){
int v[] = {4,6,7,3,5,1,2,8}; aux[i] = v[i];
// array auxiliar }
int aux[] = new int [v.length]; // percorre a primeira metade do array
mergeSort(v,aux,0,v.length-1); int j = inicio;
System.out.println(Arrays.toString(v)); // percorre a segunda metade do array
} int k = meio+1;
private static void mergeSort(int v[], int aux[], int inicio ,int fm){ // intercalar o array final
if(inicio<fim){ for(int i=inicio; i<=fim;i++){
int meio =(inicio+fim)/2; if(j>meio) v[i] = aux[k++];
mergeSort(v, aux, inicio, meio); else if(k>fim) v[i] = aux[j++];
mergeSort(v, aux, meio+1, fim); else if(aux[j] < aux[k]) v[i] = aux[j++];
intercalar(v, aux, inicio, meio, fim); else v[i] = aux[k++];
} }
}
Comparação do MergeSort com outros
algoritmos
Em comparação a algoritmos mais básicos de ordenação por
comparação e troca (bubble, insertion e selection sort), o Merge
é mais rápido e eficiente quando é utilizado sobre uma grande
quantidade de dados. Pois para ordenar cada elemento é
precisão copia-lo de volta a sequência. Para entradas pequenas
os algoritmos de ordenação por comparação mais básicos são
pró-eficientes.
Vantagens e Desvantagens
Vantagens
O MergeSort é estável: não altera a ordem de dados iguais;
Pode ser adaptado para ordenação de arquivos externos (memória
secundária).
Desvantagens
Exige uma segunda lista do mesmo tamanho;
Requer o dobro da memoria;
Usa Varias Chamadas Recursivas.
Conclusão
O MergeSort é um algoritmo de ordenação recursivo por fusão,
que consiste em fazer copias de elementos.Este algoritmo
demostra estabilidade e eficiência em sequências com maior
carga de dados. A importância do mesmo é de permitir utilizar
algoritmos de pesquisas mais eficientes durante o
processamentos de dados.

Você também pode gostar