120 likes | 406 Views
SEGURANÇA DA INFORMAÇÃO - ESTRUTURA DE DADOS C++. MERGE SORT. DANIEL C. MERODE NAIROBI S. DE OLIVEIRA. Objetivos da apresentação. Sobre o Merge Sort (ordenação por mistura ) Descrição do Algoritmo Exemplo Aplicado Limites do Merge Sort Conclusão Referências.
E N D
SEGURANÇA DA INFORMAÇÃO - ESTRUTURA DE DADOS C++ MERGE SORT DANIEL C. MERODE NAIROBI S. DE OLIVEIRA
Objetivos da apresentação • Sobre o Merge Sort (ordenação por mistura) • Descrição do Algoritmo • Exemplo Aplicado • Limites do Merge Sort • Conclusão • Referências
Sobre o Merge Sort (ordenação por mistura) • Este algoritmo foi criado por John Von Neumann - Matemático Húngaro/Estadunidense - em 1945. • É um dos algoritmos de ordenação que utiliza o método dividir para conquistar como ideia principal, sendo este um algoritmo com uma base bem matemática. • O objetivo do algoritmo é criar uma sequência ordenada a partir de outras duas já ordenadas. • Para tal, divide-se a sequência original em pares de dados, e ordena-se. Depois, agrupa-se em sequências de quatro elementos, e assim por diante até a sequência original estar separada em apenas duas partes.
Descrição do Algoritmo • O método Dividirconsiste em organizar o problema em vários sub problemas, dividindo os valores de um vetor em outros dois subvetores de tamanho [v/2] e [v/2]. • Na etapa Conquistar os dois subvetores são ordenados através da recursividade utilizando o Merge Sort. • A última etapa Combinar ocorre a uniãodos valores resolvidos e ordenados anteriormente através do método Conquistar. http://pt.wikipedia.org/wiki/Merge_sort#C.C3.B3digo_em_C.2B.2B
Exemplo aplicado Exemplo para ordenar 6, 3, 4, 8, 1, 2, 5, 3 • Etapa 1 Dividir • Dividir os dados em subsequências pequenas; • Oalgoritmo irá dividir em pares ordenados os valores informados: • 6, 3, 4, 8, 1, 2, 5, 3 • {6,3}, {8,4}, {1,2} e {5,3}
Exemplo aplicado Exemplo para ordenar 6, 3, 4, 8, 1, 2, 5, 3 • Etapa 2 Conquistar • Classificar as duas metades antes divididas e, recursivamente ir aplicando o Merge Sort; • O algoritmo irá ordenar através da recursividade os pares: • {6,3}, {8,4}, {1,2} e {5,3} • {3,6}, {4,8}, {1,2} e {3,5}
Exemplo aplicado Exemplo para ordenar 6, 3, 4, 8, 1, 2, 5, 3 • Etapa 3 Combinar • Juntar as duas metades em um único conjunto já classificado; • Por fim o algoritmo irá juntar os pares e ordenar através da recursividade da etapa 2: • {3,6}, {4,8}, {1,2} e {3,5} • {3,4,6,8} e {1,2,3,5} • Observação: a etapa 3 esta contida na etapa 2
Exemplo aplicado • Por fim o algoritmo é repetido algumas vezes até chegar na ordenação correta: • Entrada: 6, 3, 4, 8, 1, 2, 5, 3 • Processamento 1: {6,3}, {8,4}, {1,2} e {5,3} • Processamento 2: {6,3}, {8,4}, {1,2} e {5,3} • Processamento 3: {3,6}, {4,8}, {1,2} e {3,5} • Processamento 4: {3,4,6,8} , {1,2,3,5} • Processamento 5: {1, 2, 3, 3, 4, 5, 6, 8} • Saída: 1, 2, 3, 3, 4, 5, 6, 8
Limites do Merge Sort • Quando utiliza-se muitos dados, o merge sort não aconselhado devido aos inúmeros cálculos realizados através da recursão pelo processador e também aloca o dobro de memória por usar um array auxiliar. • Isto pode acarretar em mais tempo de execução onde outros métodos podem ser mais eficientes. • Abaixo gráfico comparativo do tempo médio do algoritmo : http://www.slideshare.net/OnOSJunior/anlise-emprica-de-algoritmos-de-ordenao
Conclusão • O objeto de estudo deste trabalho, algoritmo Merge Sort ou mistura de dados, mostra-se um algoritmo de ordenação um pouco complexo devido a utilização de recursividade, embora ainda este demonstre ser útil em diversos casos onde é exigido uma ordenação. • Através deste trabalho, também pudemos verificar que existem diversos algoritmos para ordenação de dados, onde dentre eles o merge sort que apresenta um nível de utilização médio baixo.
Referências • http://pt.wikipedia.org/wiki/Merge_sort#C.C3.B3digo_em_C.2B.2B • http://www.dct.ufms.br/~marco/aed22008/aula04_4.pdf • http://www.dca.fee.unicamp.br/~andreric/arquivos/Algoritmos_de_ordenacao.pdf • http://www.slideshare.net/OnOSJunior/anlise-emprica-de-algoritmos-de-ordenao • http://imasters.com.br/artigo/13015/desenvolvimento/principais-algoritmos-de-ordenacao-de-dados • http://www.lcad.icmc.usp.br/~nonato/ED/Ordenacao/node52.htm