de Algoritmos Complexidade … · Bubble Sort Merge Sort Heapsort Quick Sort Agenda. INTRODUÇÃO...

of 40/40
Complexidade de Algoritmos
  • date post

    26-Jul-2020
  • Category

    Documents

  • view

    3
  • download

    0

Embed Size (px)

Transcript of de Algoritmos Complexidade … · Bubble Sort Merge Sort Heapsort Quick Sort Agenda. INTRODUÇÃO...

  • Complexidade de Algoritmos

  • Algoritmos de ordenaçãoMsc. Marcelo Aires

  • ➢ Introdução➢ Estruturas lineares➢ Pilha e Fila➢ Árvores

    Relembrando

  • ➢ Introdução➢ Algoritmos de Ordenação

    ○ Insertion Sort○ Selection Sort○ Bubble Sort○ Merge Sort○ Heapsort○ Quick Sort

    Agenda

  • INTRODUÇÃO AOSALGORITMOS DE ORDENAÇÃO

    5

  • ➢ Ordenação de elementos em uma estrutura de dados é parte fundamental no estudo de complexidade.

    ➢ Membros da computação consideram a ordenação o problema mais fundamental no estudo de algoritmos:○ a necessidade de ordenar informações é inerente a uma

    aplicação;○ algoritmos usam a ordenação como uma sub-rotina

    chave;○ os algoritmos de ordenação empregam um rico conjunto

    de técnicas.

    Introdução

  • ➢ Existem diversos algoritmos de ordenação, abordaremos a seguir alguns deles:○ Insertion Sort○ Selection Sort○ Bubble Sort○ Merge Sort○ Heapsort○ Quick Sort

    Introdução

  • INSERTION SORT

    8

  • ➢ Ordenação por inserção;➢ Funcionamento:

    ○ Primeiro elemento está "ordenado" (ou seja, na posição correta);

    ○ A partir do segundo elemento, a cada um, insere-o na posição apropriada (entre os ordenados);

    ○ O elemento é inserido na posição adequada movendo-se todos os elementos maiores para posição seguinte do vetor.

    Insertion Sort

  • ➢ Características importantes:○ É de simples implementação, leitura e manutenção;○ Não muda os elementos com valores iguais;○ Útil para pequenas entradas;○ Muitas trocas, e menos comparações;○ Melhor caso: Ω(n), matriz está ordenada;○ Médio caso: Θ(n²/4), matriz tem valores aleatórios;○ Pior caso: O(n²), matriz está em ordem inversa.

    Insertion Sort

  • ➢ Interessante para popular um vetor (vazio).➢ Exemplo:

    Insertion Sort

  • Insertion Sort

  • SELECTION SORT

    13

  • ➢ Ordenação por seleção;➢ Funcionamento:

    ○ Passa-se sempre o menor valor do vetor para a primeira posição (ou o maior dependendo da ordem requerida);

    ○ Depois o de segundo menor valor para a segunda posição, e assim é feito sucessivamente, até os últimos dois elementos.

    Selection Sort

  • ➢ Características importantes:○ Algoritmo simples e não necessita de um vetor auxiliar;○ Ocupa menos memória e é uns dos mais velozes na

    ordenação de vetores de tamanhos pequenos;○ Um dos mais lentos para vetores de tamanhos grandes.○ Melhor/Médio/Pior caso: O(n²).

    Selection Sort

  • Selection Sort

  • Selection Sort

  • BUBBLE SORT

    18

  • ➢ Ordenação por flutuação;➢ Funcionamento:

    ○ Percorre-se o vetor diversas vezes, e a cada passagem faz-se flutuar para o topo o maior elemento da sequência. (semelhante às bolhas em um tanque de água que procuram seu próprio nível)

    Bubble Sort

  • ➢ Características importantes:○ Recomendado para programas que precisem de

    velocidade e operem com quantidade elevada de dados.○ Pior caso: O(n²).○ Melhor caso: Ω(n)○ Caso médio: Θ(n²)

    Bubble Sort

  • Bubble Sort

  • Bubble Sort

  • MERGE SORT

    23

  • ➢ Ordenação por mistura (dividir para conquistar);➢ Funcionamento:

    ○ Dividir: distribuir os dados em subsequências pequenas;■ Realizado recursivamente, divide-se o vetor em duas metades, que,

    posteriormente, é dividido novamente, até não ser possível a divisão.

    ○ Conquistar: Classificar as duas metades recursivamente aplicando o merge sort;

    ○ Combinar: Juntar as duas metades em um único conjunto.○ Por fim, faz-se o merge ou a fusão dos sub-vetores ordenados.

    Merge Sort

  • ➢ Características importantes:○ Divide o vetor para melhorar a performance;○ Melhor/Médio/Pior caso: O(n log n).○ Desvantagem: requer o dobro de memória (dois vetores).

    Merge Sort

  • ➢ p: primeiro➢ r: último➢ q: meio

    Merge Sort

  • Merge Sort

  • HEAPSORT

    28

  • ➢ Ordenação generalista;➢ Funcionamento:

    ○ Utiliza uma estrutura de dados chamada heap binário para ordenar os elementos à medida que os insere.

    ○ Depois das inserções, os elementos podem ser sucessivamente removidos da heap, na ordem desejada.

    Heapsort

  • ➢ Características importantes:○ Melhor/Médio/Pior caso: O(n log n).○ Rápido em cenários de pior caso.

    Heapsort

  • Heapsort8

    4 7

    1 3 5

    8

    4 7

    1 3 5

    8

    4 7

    1 3 5

    8

    4 7

    1 3 5

    5

    4 7

    1 3 8

    7

    4 5

    1 3 8

  • Heapsort3

    4 5

    1 7 8

    5

    4 3

    1 7 8

    1

    4 3

    5 7 8

    4

    1 3

    5 7 8

    3

    1 4

    5 7 8

    1

    3 4

    5 7 8

  • Heapsort

  • QUICK SORT

    34

  • ➢ Ordenação rápida por pivot (elemento escolhido);➢ Funcionamento:

    ○ Defina um elemento da lista, denominado pivô;○ Particiona: divida a lista com elementos menores e maiores ao

    pivô, faça isso até não ser possível dividir. Essa operação é denominada partição;

    ○ Recursivamente ordene a sub lista dos elementos menores e a sublista dos elementos maiores;

    ○ Por fim, agrupe as sublistas.

    Quick Sort

  • ➢ Características importantes:○ Divide o vetor para melhorar a performance, escolhendo

    sempre um pivot;○ Pior caso: O(n²).○ Melhor caso: Ω(n log n)○ Caso médio: Θ(n log n)

    Quick Sort

  • ➢ pivot: elemento escolhido.

    Quick Sort

  • Quick Sort

  • ➢ Além destes algoritmos de ordenação existem muitos outros, como:○ Comb sort (pente): melhora o Bubble Sort.○ Bogo sort (case sort): não utilizado na prática.○ Shell sort: melhora o insertion sort.○ Radix sort: não é limitado a números inteiros.○ Gnome sort: semelhante ao insertion sort (várias trocas).○ Counting sort: define a quantidade de elementos menores.○ Bucket sort: divide o vetor em vários subvetores.○ Cocktail sort: bubble sort bidirecional (ambas as direções)○ Timsort: derivado do merge e insertion sort.

    Extra

  • ➢ CORMEN, T. H.; STEIN, C.; LEISERSON, C.; RIVEST, R. L. Algoritmos: teoria e prática. Rio de Janeiro: Campus, 2002.

    Referências