Ciência da Computação (APS) 4º Semestre - Criptografia Assimétrica MD5
Por: Fabio Lando • 18/10/2018 • Trabalho acadêmico • 4.237 Palavras (17 Páginas) • 406 Visualizações
[pic 1]
Ciência da Computação
Criptografia Assimétrica MD5
Jader Fabio Acosta Lando
RA: C73479-9
Niacleba Tamiris Ferreira Martins
RA: N995AB-8
Thaina Milene dos Santos RA: D0494C-6
São Paulo, 2016
Indíce
Objetivo Geral 2
Objetivo Específico 2
Introdução 3
Bubble sort. 4
Algoritmo 6
Pseudo-código 6
Implementação em C 8
Resultado 10
Merge Sort 12
Criador do Quicksort 13
Quicksort 13
Como funciona? 13
Algoritmo de Ordenação 14
Algoritmo de Escolha de Pivô 14
Algoritmo de Partição 14
Código do Quicksort 15
Conclusão 17
Objetivo Geral
Criar um programa funcional em C# de ordenação de dados, com intuito de testar os conhecimentos obtidos ao decorrer da matéria Estrutura de Dados
Objetivo Específico
Solucionar o estudo de caso apresentado para desenvolvimento dos programas de organização e ordenação.
Introdução
Quaisquer números de aplicações práticas na computação exigem que as coisas estejam em ordem. Mesmo antes de começar a computação, a importância da classificação é perfurada para nós. De fotos de grupo que exigem que as pessoas mais altas fiquem na parte de trás, para o vendedor de maior bilheteria obter o maior bônus de Natal, a necessidade de colocar as coisas mais pequenas para a primeira ou a última não pode ser subestimada.
Quando consultamos um banco de dados e anexamos uma cláusula ORDER BY, estamos ordenando. Quando procuramos uma entrada na lista telefônica, estamos lidando com uma lista que já foi classificada. (E imagine se não fosse!) Se você precisa pesquisar através de uma matriz usando uma pesquisa binária, é necessário primeiro classificar a matriz. Quando uma declaração de problema dita que, no caso de uma gravata, devemos retornar o primeiro resultado lexicograficamente, bem ... essa é a ideia.
Considerações Gerais
Imagine levar um grupo de pessoas, dando-lhes cada um baralho de cartas que foi arrastado e solicitando que eles classificassem os cartões em ordem ascendente. Algumas pessoas podem começar a fazer pilhas, outras podem espalhar as cartas em toda uma mesa, e outros podem fazer malabarismos nas cartas. Para alguns, o exercício pode levar uma questão de segundos, para outros, vários minutos ou mais. Alguns podem acabar com um baralho de cartas onde as espadas aparecem sempre antes dos corações, em outros casos, pode ser menos organizado. Fundamentalmente, estes são os grandes pontos que levam os algoritmos a debater os prós e os contras de vários algoritmos de classificação.
Ao comparar vários algoritmos de classificação, há várias coisas a considerar. O primeiro geralmente é tempo de execução. Ao lidar com conjuntos de dados cada vez maiores, algoritmos de classificação ineficientes podem tornar-se muito lentos para uso prático em uma aplicação.
Uma segunda consideração é o espaço da memória. Algoritmos mais rápidos que requerem chamadas recursivas geralmente envolvem a criação de cópias dos dados a serem ordenados. Em alguns ambientes onde o espaço da memória pode ser superior (como um sistema integrado), certos algoritmos podem ser impraticáveis. Em outros casos, pode ser possível modificar o algoritmo para funcionar "no lugar", sem criar cópias dos dados. No entanto, esta modificação também pode vir ao custo de alguma vantagem de desempenho.
Uma terceira consideração é a estabilidade. A estabilidade, simplesmente definida, é o que acontece com elementos que são comparativamente os mesmos. Em um tipo estável, os elementos cuja chave de comparação são os mesmos permanecerão na mesma ordem relativa após a classificação como antes da classificação. Em um tipo instável, nenhuma garantia é feita para a ordem de saída relativa dos elementos cuja chave de classificação é a mesma.
Bubble sort.
Bubble sort é um algoritmo de classificação simples. Este algoritmo de classificação é um algoritmo baseado em comparação em que cada par de elementos adjacentes é comparado e os elementos são trocados se não estiverem em ordem. Este algoritmo não é adequado para grandes conjuntos de dados, pois a sua complexidade média e pior cenário é de Ο(n2) onde n é o número de itens.
Como o Bubble Sort funciona?
Nós tomamos uma matriz não triada para o nosso exemplo. O Bubble Sort leva Ο(n2) tempo, então estamos mantendo-o curto e preciso.
[pic 2]
Figura 1 - Demostração da Base
Bubble sort começa com os dois primeiros elementos, comparando-os para verificar qual deles é maior.
[pic 3]
Figura 2 - Numeros selecionados
Nesse caso, o valor 33 é maior que 14, então já está em locais classificados. Em seguida, comparamos 33 com 27.
[pic 4]
Figura 3 - Proximos numeros
Achamos que 27 é menor que 33 e esses dois valores devem ser trocados.
...