Estrutura de
Dados
Quando usar o quê?
profa. Divani Barbosa
Aula 15 (final)
Resumo
Estruturas de dados especializadas:
Pilhas, filas, filas de prioridades e heap
Estruturas de dados de propósito geral:
Vetores, listas encadeadas, arvore binaria de busca e
tabela hash
Ordenação:
Inserção, seleção, bubblesort, mergesort e quicksort
Pesquisa:
Linear (sequencial), binária e hashing
Prioridades (acesso rápido ao maior item)
Vetor ordenado, fila de prioridades, arvore binaria e
heapsort 2
3
Relembrando ... Notação Big O
Usada para expressar o quanto um algoritmo
computacional é eficiente.
Informa como a velocidade de um algoritmo está
relacionada com o numero de itens a ser avaliado.
No pior caso o tempo de pesquisa K será multiplicado
pelo numero total de itens (n):
Tempo total = K * n
No pior caso o tempo de pesquisa K será multiplicado
pelo logaritmo na base 2 do numero de itens:
Tempo total = K * log2(n)
4
Gráfico Big O Demonstra como tempos de execução
são afetados pelo numero de itens
5
Comparação entre os
Algoritmos de Busca
Sequencial
(aula 2 – parte 2)
Binária
(aula 2 – parte 2)
Hashing
(aula 11)
Vantagem Simplicidade Eficiência Eficiência
Desvantagem Custo elevado Arranjo deve estar
ordenado
Não recupera em
ordem alfabética
Pior Caso O(n) O(log n) O(n)
Caso Médio O(n) O(log n) O(1)
Lembrando ... O objetivo principal da Tabela Hash é o de a partir de
uma chave simples, fazer uma busca rápida e obter o valor desejado.
6
Estrutura Inserção Eliminação Acesso ao
item com
maior chave
Vetor Ordenado (aula 2 – parte 2) O(n) O(n) O(1)
Fila de Prioridade (aula 8 – parte 2) O(n) O(1) O(1)
Arvore Binária (pior caso)
(aula 13 – parte 1 e 2)
O(n) O(n) O(n)
Arvore Binária (balanceada)
(aula 13 – parte 1 e 2)
O(log n) O(log n) O(log n)
HeapSort (aula 14 – parte 1 e 2) O(log n) O(log n) O(1)
Comparação das Estruturas de
Armazenamento Vistas que oferecem acesso
rápido ao item de dados com a maior chave
7
Algoritmo Média Pior Melhor
Bolha (aula 2 – parte 2) O(n2) O(n2) O(n)
Seleção (aula 4 – parte 1) O(n2) O(n2) O(n2)
Inserção (aula 4 – parte 1) O(n2) O(n2) O(n)
MergeSort
(aula 4 – parte 2)
O(n*log n) O(n*log n) O(n*log n)
QuickSort
(aula 4 – parte 2)
O(n*log n) O(n2) O(n*log n)
Comparação entre os Algoritmos de
Ordenação
8
Estrutura Inserção Eliminação Comentário
Pilha (vetor ou lista encadeada)
(aula 2 – parte 2 e aula 9 – parte 2)
O(1) O(1)
Elimina item
inserido mais
recentemente
Fila (vetor ou lista encadeada)
(aula 7 – parte 2 e aula 9 – parte 2)
O(1) O(1)
Elimina item
inserido
menos
recentemente
Fila Prioridade (vetor ordenado)
(aula 8 – parte 2)
O(n) O(1)
Elimina item
com prioridade
mais alta
HeapSort (fila de prioridade)
(aula 14 – parte 1 e 2)
O(log n) O(log n)
Elimina item
com prioridade
mais alta
Comparaço entre todas as Estruturas de
Armazenamento Vistas
Comparação entre as Estruturas de
Armazenamento de Propósito Especial Vistas
9
Estrutura Inserção Eliminação Pesquisa
Vetor (aula 2 – parte 1) O(1) O(n) O(n)
Vetor Ordenado (aula 2 – parte 2) O(n) O(n) O(log n)
Lista Encadeada (aulas 9 e 10) O(1) O(n) O(n)
Lista Encadeada Ordenada
(aula 10 – parte 2)
O(n) O(n) O(n)
Arvore Binária (pior caso)
(aula 13 – parte 1 e 2)
O(n) O(n) O(n)
Arvore Binária (balanceada)
(aula 13 – parte 1 e 2)
O(log n) O(log n) O(log n)
Tabela Hash (pior caso)
(aula 11)
O(n) O(n) O(n)
Tabela Hash (caso médio)
(aula 11)
O(1) O(1) O(1)
Comparação entre as Estruturas de
Armazenamento de Propósito Geral Vistas
Pequena
quantidade de
dados?
Fila de
Prioridade
Quantidade de
dados
previsível?
Pesquisa e
inserção tem de
ser muito
rápidas?
Tabela
HASH
Vetor
Ordenado
Velocidade de
pesquisa mais
importante que
velocidade de
inserção?
Distribuição de
chaves
garantidamente
aleatórias?
Arvore
Binaria
Vetor não
Ordenado
HeapSort
Início
S
S
S
S
S
N
N
N
N
N
Fonte: Robert Lafore, Estrutura de Dados e Algoritmos em Java,
Editora Ciência Moderna, 2004.
Figura: Relacionamentos entre
as estruturas de dados vistas
11
FIM
Calendário
5- Feriado Aniversário Taubaté
21 – Termino do segundo
semestre letivo
Dia Aula
4 HOJE – Aula Quando usar o quê?
6 Ultimo prazo envio Trabalho 2
11 Simulado Prova 2
12 Prova 2
18 Simulado Prova 3
19 Prova 3
20 Prazo final para alterações no
sistema SIGA
Email: divani.gavinier@fatec.sp.gov.br
Mandar arquivo do Trabalho em
formato PDF

Aula 22

  • 1.
    Estrutura de Dados Quando usaro quê? profa. Divani Barbosa Aula 15 (final)
  • 2.
    Resumo Estruturas de dadosespecializadas: Pilhas, filas, filas de prioridades e heap Estruturas de dados de propósito geral: Vetores, listas encadeadas, arvore binaria de busca e tabela hash Ordenação: Inserção, seleção, bubblesort, mergesort e quicksort Pesquisa: Linear (sequencial), binária e hashing Prioridades (acesso rápido ao maior item) Vetor ordenado, fila de prioridades, arvore binaria e heapsort 2
  • 3.
    3 Relembrando ... NotaçãoBig O Usada para expressar o quanto um algoritmo computacional é eficiente. Informa como a velocidade de um algoritmo está relacionada com o numero de itens a ser avaliado. No pior caso o tempo de pesquisa K será multiplicado pelo numero total de itens (n): Tempo total = K * n No pior caso o tempo de pesquisa K será multiplicado pelo logaritmo na base 2 do numero de itens: Tempo total = K * log2(n)
  • 4.
    4 Gráfico Big ODemonstra como tempos de execução são afetados pelo numero de itens
  • 5.
    5 Comparação entre os Algoritmosde Busca Sequencial (aula 2 – parte 2) Binária (aula 2 – parte 2) Hashing (aula 11) Vantagem Simplicidade Eficiência Eficiência Desvantagem Custo elevado Arranjo deve estar ordenado Não recupera em ordem alfabética Pior Caso O(n) O(log n) O(n) Caso Médio O(n) O(log n) O(1) Lembrando ... O objetivo principal da Tabela Hash é o de a partir de uma chave simples, fazer uma busca rápida e obter o valor desejado.
  • 6.
    6 Estrutura Inserção EliminaçãoAcesso ao item com maior chave Vetor Ordenado (aula 2 – parte 2) O(n) O(n) O(1) Fila de Prioridade (aula 8 – parte 2) O(n) O(1) O(1) Arvore Binária (pior caso) (aula 13 – parte 1 e 2) O(n) O(n) O(n) Arvore Binária (balanceada) (aula 13 – parte 1 e 2) O(log n) O(log n) O(log n) HeapSort (aula 14 – parte 1 e 2) O(log n) O(log n) O(1) Comparação das Estruturas de Armazenamento Vistas que oferecem acesso rápido ao item de dados com a maior chave
  • 7.
    7 Algoritmo Média PiorMelhor Bolha (aula 2 – parte 2) O(n2) O(n2) O(n) Seleção (aula 4 – parte 1) O(n2) O(n2) O(n2) Inserção (aula 4 – parte 1) O(n2) O(n2) O(n) MergeSort (aula 4 – parte 2) O(n*log n) O(n*log n) O(n*log n) QuickSort (aula 4 – parte 2) O(n*log n) O(n2) O(n*log n) Comparação entre os Algoritmos de Ordenação
  • 8.
    8 Estrutura Inserção EliminaçãoComentário Pilha (vetor ou lista encadeada) (aula 2 – parte 2 e aula 9 – parte 2) O(1) O(1) Elimina item inserido mais recentemente Fila (vetor ou lista encadeada) (aula 7 – parte 2 e aula 9 – parte 2) O(1) O(1) Elimina item inserido menos recentemente Fila Prioridade (vetor ordenado) (aula 8 – parte 2) O(n) O(1) Elimina item com prioridade mais alta HeapSort (fila de prioridade) (aula 14 – parte 1 e 2) O(log n) O(log n) Elimina item com prioridade mais alta Comparaço entre todas as Estruturas de Armazenamento Vistas Comparação entre as Estruturas de Armazenamento de Propósito Especial Vistas
  • 9.
    9 Estrutura Inserção EliminaçãoPesquisa Vetor (aula 2 – parte 1) O(1) O(n) O(n) Vetor Ordenado (aula 2 – parte 2) O(n) O(n) O(log n) Lista Encadeada (aulas 9 e 10) O(1) O(n) O(n) Lista Encadeada Ordenada (aula 10 – parte 2) O(n) O(n) O(n) Arvore Binária (pior caso) (aula 13 – parte 1 e 2) O(n) O(n) O(n) Arvore Binária (balanceada) (aula 13 – parte 1 e 2) O(log n) O(log n) O(log n) Tabela Hash (pior caso) (aula 11) O(n) O(n) O(n) Tabela Hash (caso médio) (aula 11) O(1) O(1) O(1) Comparação entre as Estruturas de Armazenamento de Propósito Geral Vistas
  • 10.
    Pequena quantidade de dados? Fila de Prioridade Quantidadede dados previsível? Pesquisa e inserção tem de ser muito rápidas? Tabela HASH Vetor Ordenado Velocidade de pesquisa mais importante que velocidade de inserção? Distribuição de chaves garantidamente aleatórias? Arvore Binaria Vetor não Ordenado HeapSort Início S S S S S N N N N N Fonte: Robert Lafore, Estrutura de Dados e Algoritmos em Java, Editora Ciência Moderna, 2004. Figura: Relacionamentos entre as estruturas de dados vistas
  • 11.
  • 12.
    Calendário 5- Feriado AniversárioTaubaté 21 – Termino do segundo semestre letivo Dia Aula 4 HOJE – Aula Quando usar o quê? 6 Ultimo prazo envio Trabalho 2 11 Simulado Prova 2 12 Prova 2 18 Simulado Prova 3 19 Prova 3 20 Prazo final para alterações no sistema SIGA Email: divani.gavinier@fatec.sp.gov.br Mandar arquivo do Trabalho em formato PDF