1 / 32

Algoritmos de ordenação

Algoritmos de ordenação. Nayara Gatto Pracucho 7547722 Vinícius Bertaco Neves 7127460. Bubble S ort. A ideia é percorrer o vetor diversas vezes, fazendo “flutuar” para o topo o menor elemento da sequência.

adara
Download Presentation

Algoritmos de ordenação

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algoritmos de ordenação Nayara Gatto Pracucho 7547722 Vinícius Bertaco Neves 7127460

  2. Bubble Sort • A ideia é percorrer o vetor diversas vezes, fazendo “flutuar” para o topo o menor elemento da sequência. • Se o vetor for considerado do tipo coluna, os elementos podem ser comparados com bolhas em um tanque de água, com densidades proporcionais ao valor das respectivas chaves.

  3. Bubble Sort ... para i  2 até i  N, com passo i i+1 para j  N até j  i, com passo j  j-1 se ( a [ j - 1 ] > a [ j ] ) x  a [ j – 1 ] a [ j – 1 ]  a [ j ] a [ j ]  x fim se fim para fim para ...

  4. Bubble Sort N = 8 N = 8 N = 8 a a a 1 1 1 i 2 i 2 i 2 3 3 3 4 4 4 5 5 5 j - 1 j - 1 6 6 6 j j - 1 7 j 7 7 j 8 8 8

  5. Bubble Sort N = 8 N = 8 N = 8 a a a 1 1 1 i 2 i 2 i 2 3 3 3 j - 1 4 4 4 j - 1 j - 1 5 j 5 5 6 6 j j 6 7 7 7 8 8 8

  6. Bubble Sort N = 8 N = 8 N = 8 a a a 1 1 1 i 2 i 2 i 2 3 j - 1 3 j - 1 3 4 4 4 j - 1 j j 5 5 j 5 6 6 6 7 7 7 8 8 8

  7. Bubble Sort N = 8 N = 8 N = 8 a a a j - 1 1 1 1 j - 1 i 2 j i 2 i 2 j - 1 3 3 j 3 j 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8

  8. Bubble Sort N = 8 N = 8 N = 8 a a a j - 1 1 1 1 2 i 2 i j 2 i 3 3 3 4 4 4 5 5 5 6 6 6 j - 1 7 7 7 j 8 8 8 Término da primeira passagem (i = 2)

  9. Bubble Sort N = 8 N = 8 N = 8 a a a 1 1 1 2 2 2 i i i 3 3 3 4 4 4 j - 1 5 5 5 j - 1 j j - 1 6 6 6 j 7 j 7 7 8 8 8

  10. Bubble Sort N = 8 N = 8 N = 8 a a a 1 1 1 2 2 2 j - 1 i i i 3 3 3 j 4 4 4 j - 1 j - 1 5 5 j 5 j 6 6 6 7 7 7 8 8 8

  11. Bubble Sort N = 8 N = 8 N = 8 a a a 1 1 1 2 j - 1 j - 1 2 2 i j - 1 i i 3 3 3 j j 4 j 4 4 5 5 5 6 6 6 7 7 7 8 8 8

  12. Bubble Sort N = 8 N = 8 N = 8 a a a 1 1 1 2 2 2 i 3 3 3 i 4 4 4 i 5 5 5 6 6 6 j - 1 7 j - 1 7 7 8 j j 8 8 Término da segunda passagem (i = 3)

  13. Bubble Sort N = 8 N = 8 N = 8 a a a 1 1 1 2 2 2 3 3 3 j - 1 i 4 i 4 4 i j - 1 j 5 5 5 j j - 1 6 6 6 j 7 7 7 8 8 8

  14. Bubble Sort N = 8 N = 8 N = 8 a a a 1 1 1 2 2 2 3 j - 1 3 j - 1 3 j - 1 i 4 i 4 4 j i j 5 5 j 5 6 6 6 7 7 7 8 8 8

  15. Bubble Sort N = 8 N = 8 N = 8 a a a 1 1 1 2 2 2 3 3 3 4 i 4 4 i 5 5 5 i j - 1 6 6 6 j - 1 7 j 7 7 8 8 j 8 Término da passagem (i = 4)

  16. Bubble Sort N = 8 N = 8 N = 8 a a a 1 1 1 2 2 2 3 3 3 j - 1 4 4 4 j i 5 5 i j - 1 i 5 j - 1 j j 6 6 6 7 7 7 8 8 8

  17. Bubble Sort N = 8 N = 8 N = 8 a a a 1 1 1 2 2 2 3 3 3 4 4 j - 1 4 5 5 j i i 5 i 6 6 6 j - 1 7 7 7 8 j 8 8 Término da passagem (i = 5)

  18. Bubble Sort N = 8 N = 8 N = 8 a a a 1 1 1 2 2 2 3 3 3 4 4 4 j - 1 5 5 5 i j i j - 1 i 6 6 6 7 j 7 7 8 8 8 Término da passagem (i = 6)

  19. Bubble Sort N = 8 N = 8 N = 8 a a a 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 j - 1 6 6 6 j - 1 j 7 i i 7 i 7 8 j 8 8 Término da passagem (i = 7)

  20. Bubble Sort N = 8 N = 8 a a 1 1 2 2 3 3 4 4 5 5 6 6 7 j - 1 7 i 8 j i 8 Término da passagem (i = 8)

  21. Bubble Sort • Complexidade: • No melhor caso, o algoritmo executa n operações relevantes. • No pior caso, são feitasn² operações. • Portanto, a complexidade desse algoritmo é de Ordem quadrática. O(N²)

  22. Bubble Sort • Conclusão: • O Bubble Sort é um método de simples implementação, porém a sua eficiência é menor entre os métodos de ordenação interna.

  23. Quicksort • História: • Método de ordenação muito rápido e eficiente, inventado por C.A.R. Hoare em 1960 • Criou o Quicksort ao tentar traduzir um dicionário de inglês para russo, ordenando as palavras. Tendo como objetivo reduzir o problema original em subproblemas que possam ser resolvidos mais fácil e rapidamente.

  24. Quicksort • Qual a ideia básica do Quicksort? • A ideia básica é dividir o problema de ordenar um conjunto com n itens em dois subproblemas menores (estratégia de divisão e conquista). • Os problemas menores são ordenados independentes. • Utiliza um elemento arbitrário chamado pivô. • Geralmente é o elemento do meio • O pivô pode influenciar no desempenho

  25. Quicksort • Funcionamento detalhado: Algoritmo de Partição • O vetor v é rearranjado por meio da escolha arbitrária de um pivô p • O vetor v é particionado em dois: • Restarão dois ‘sub-vetores’ para serem ordenados. • Espera-se que o ‘sub-vetor’ esquerdo contenha elementos menores que o pivô e o ‘sub-vetor’ direito, elementos maiores. • O vetor é então percorrido em ambos os sentidos, e quando a condição não é satisfeita, os elementos são trocados. • Termina cada ‘etapa’ quando ponteiros se cruzam, continua recursivamente.

  26. Quicksort

  27. Quicksort

  28. Quicksort

  29. Quicksort • Complexidade: • Pior caso • Acontece quando o pivô é sempre o maior ou menor elemento (partições de tamanho desequilibrado) • = O(n²) • espaço/memória necessário no pior caso é linear • Melhor caso • Acontece quando as partições têm sempre o mesmo tamanho (partições balanceadas). • Pivô representa elemento mediano do conjunto. • C(n) =n(logn) = O (n logn) • Caso médio • C(n) ~ 1,39 n logn = O (n logn)

  30. Quicksort • Análise: • Vantagens: • Melhor opção para ordenar vetores grandes. • Muito rápido devido ao laço interno ser simples. • Algoritmo Instável • Processo de partição não é estável • Qualquer chave pode ser movida para trás de várias outras chaves iguais a si (que ainda não foram examinadas) • Não é conhecida nenhuma forma simples de implementar uma versão estável. • Nãose deve chamar recursivamente se o vetor tiver tamanho 1 • Desvantagem: • Pior caso (n²)

  31. Quicksort • Otimizações: Outras abordagens • Pivô baseado em uma Mediana • Aumentar o número de elementos considerados na mediana. • Implementação não recursiva • Pilha auxiliar, que pode ter tamanho N. • Ordenar a partição menor primeiro. • Algoritmo genérico incluído na biblioteca padrão • Stdlib.h • “ voidqsort (void *v, int n, inttam, int (*cmp)(constvoid*, constvoid*)); ” • Muito rápido devido ao laço interno ser simples.

  32. Biblioteca • http://dcm.ffclrp.usp.br/~augusto/icii/ • http://www.cos.ufrj.br/~rfarias/cos121/aula_05.html • http://pt.wikipedia.org/wiki/Bubble_sort

More Related