Estrutura de Dados. ! Listas lineares. ! Como manipulá-las: ! estática. ! dinâmicas. ! pilhas. ! filas

Documentos relacionados
ESTRUTURA DE DADOS (TCC )

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

TCC Prof.: Leandro A. F. Fernandes Conteúdo: Listas Lineares

Listas Lineares. continuando...

Estrutura de Dados: Lista Linear. Parte I Introdução e Listas Sequenciais Estáticas

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Estrutura de Dados: Lista Linear. Parte I Introdução e Listas Sequenciais Estáticas

Algoritmos de Busca em Vetores

Conteúdo. Busca Seqüencial. Busca Binária. Algoritmos de Ordenação e Busca e sua Análise de Complexidade. Alneu de Andrade Lopes Rosane Minghim

Filas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014

Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler

Filas de prioridade. Marcelo K. Albertini. 3 de Dezembro de 2013

Árvores Binárias de Busca (ABB) 18/11

Carlos Eduardo Batista. Centro de Informática - UFPB

Análise e Complexidade de Algoritmos

Estruturas de Dados Estruturas de Dados Fundamentais

1/36 LISTAS. Programação II

LISTAS LINEARES. Estrutura de Dados

Universidade de São Paulo

ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES

Análise e Complexidade de Algoritmos

Estrutura de Dados. Estrutura de Dados Recursividade. Exemplo: 5! = 5 x 4! 4! = 4 x 3! 3! = 3 X 2! 2! = 2 x 1! 1! = 1 x 0!

Tipos e Estruturas de Dados Profa. Graça Nunes Lista de Exercícios (Listas Encadeadas, Duplamente Encadeadas e Circulares)

Arquivos Sequenciais. Estruturas de Dados II Vanessa Braganholo

3.2.2 Pilha (LIFO - last in, first out) - Inserção e remoção apenas no final da lista.

BUSCA EM ARRAYS. Prof. André Backes. Ato de procurar por um elemento em um conjunto de dados

HeapSort Filas de Prioridade Heap. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Aula 13: Ordenação - Heapsort. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Árvores Binárias de Busca (ABB) 18/11

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Aplicações de listas e outras estruturas

Carlos Eduardo Batista. Centro de Informática - UFPB

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

ASSOCIAÇÃO PARAIBANA DE ENSINO RENOVADO FACULDADE PARAIBANA DE PROCESSAMENTO DE DADOS ESTRUTURA DE DADOS

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Aula 15: Pesquisa em Memória Primária. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB

Complexidade de algoritmos Notação Big-O

Ordenação: QuickSort. Prof. Túlio Toffolo BCC202 Aula 15 Algoritmos e Estruturas de Dados I

O problema da busca (ou pesquisa) - Dado um conjunto de elementos, onde cada um é identificado por uma chave, o objetivo da busca é localizar, nesse

Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

Programação de Computadores II. Cap. 17 Busca

O conjunto de registros pode ser: Um vetor de registros Uma lista encadeada Uma árvore Etc.

INF1007: Programação 2 7 Busca em Vetores. 01/04/2014 (c) Dept. Informática - PUC-Rio 1

Árvores binárias de busca

Bubble Sort. Tempo total O(n 2 )

Lista Ordenada. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Estrutura de Dados. Aleardo Manacero Jr.

Listas Estáticas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Árvores AVL e Árvores B. Jeane Melo

Estruturas de Dados Algoritmos de Ordenação

MÉTODOS DE CLASSIFICAÇÃO EM MEMÓRIA PRIMÁRIA. George Gomes Cabral

DAINF - Departamento de Informática

Árvores binárias de busca

Árvore Binária de Busca. Prof. César Melo

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Pesquisa Linear. Adriano J. Holanda 15/3/2016

10.1. Aula 10: Pilhas. O conceito de pilha. Algoritmos de inserção e remoção. Exemplo: Notação Polonesa

Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

Aplicações de listas Outras estruturas

Ordenação: HeapSort. Prof. Túlio Toffolo BCC202 Aula 17 Algoritmos e Estruturas de Dados I

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

MÉTODOS DE PESQUISA DE DADOS EM MEMÓRIA PRIMÁRIA. Material da Prof. Ana Eliza

Edital de Seleção 023/2018 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Pesquisa em memória primária

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior

Aplicações de listas e outras estruturas. SCC-502 Algoritmos e Estruturas de Dados I

SCC0601 Introdução à Ciência da Computação II. Prof. Lucas Antiqueira

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro Sala 110 Prédio da Computação IECE - ITA

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral

Método BubbleSort. Estrutura de Dados II Prof Jairo Francisco de Souza

Introdução à Ciência da Computação II

Aula 16: Pesquisa em Memória Primária - Árvores de Busca. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Classificação e Pesquisa

Aplicações de listas e outras estruturas. SCC-502 Algoritmos e Estruturas de Dados I

Algoritmos e Estruturas de Dados 2005/2006

AULA 17. Melhores momentos. Segmento de soma máxima. Segmento de soma máxima. Conclusões. Algumas técnicas

Ordenação: Heapsort. Algoritmos e Estruturas de Dados II

Árvores Binária de Busca. Prof. César Melo DCC/ICE/UFAM

Listas: a última das 3 estruturas lineares (Pilhas, Filas e Listas)... árvores e grafos são não lineares!

Filas de Prioridades Letícia Rodrigues Bueno

Árvores B. Árvores B. Estrutura de Dados II Jairo Francisco de Souza

Ordenação por Intercalação Métodos de Ordenação Parte 4

ÁRVORE BINÁRIA DE BUSCA

Métodos Computacionais. Listas Encadeadas

Aula 18 Algoritmos básicos de busca e classificação

Edital de Seleção 055/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Projeto e Análise de Algoritmos

CURSO DE ESTRUTURA DE DADOS MÓDULO: ALGORITMOS DE ORDENAÇÃO E PESQUISA PROFESSORA: DANIELA ELOISE FLÔR COLABORADORA: MARIA CAROLINA SILA VANUCHI

Aula 2 Listas Lineares Sequenciais. prof Leticia Winkler

Transcrição:

Estrutura de Dados! Listas lineares! estática! dinâmicas! Como manipulá-las:! pilhas! filas 1

Listas Lineares! fácil manipulação! agrupa informações referentes a um conjunto de elementos que se relacionam entre si! Uma lista linear ou tabela é um conjunto de n elementos L[0], L[1],..., L[n-1] tais que! n>0, e L[0] é o primeiro elemento! para 0 < k < n, L[k] é precedido por L[k-1] 2

Listas Lineares! Operações: busca, inclusão e remoção! outras operações:! alteração de um elemento na lista! combinação de duas ou mais listas! ordenação! Casos particulares:! remoção e inserção apenas nas extremidades - deque! inserção/remoção em um único extremo - pilha! inserções e um extremo e remoções no outro - fila! Alocação: seqüencial ou encadeada 3

Listas Sequenciais! Alocação seqüencial de memória! endereço do (j+1) ésimo elemento se encontra a uma unidade de armazenamento j-ésimo elemento! Representação e acesso! i-ésimo elemento: L[i]! Cada elemento pode ser formado por campos! uma chave k[i] está associada ao nó L[i]! a lista é dita classificada ou ordenado por chave quando: se i < j então k[i] precede k[j] 4

Busca Seqüencial! busca em uma lista seqüencial! ordenada pelas suas chaves! não ordenada! Problema: busca pelo valor v em um conjunto de N elementos. O procedimento retorna o valor da posição da lista sequencial se encontrar e N, caso contrário 5

Busca Seqüencial 1 5 3 2 9 7 1 5 3 2 9 7 6

Busca Seqüencial 1 5 3 2 9 7 1 5 3 2 9 7 4 7

Busca Seqüencial Busca_Seqüencial_1 (v){ pos = 0; while ( (pos<n) && (v!= L [pos]) ) pos++; return(pos); } 8

Busca Seqüencial Busca_Seqüencial_1 (v){ pos = 0; while ( (pos<n) && (v!= L [pos]) ) pos++; return(pos); } Busca_Seqüencial_2 (v){ L[N] = v; pos = -1; do { pos = pos+1; ([ pos ] } while ( v!= L return(pos); } 9

Busca Seqüencial! A complexidade do pior caso é O(n) para os dois algoritmos! O segundo é de execução mais rápida pois o número de testes é menor a cada iteração 10

Busca Seqüencial! Problema:! inserir um novo valor em uma lista seqüencial desordenada, caso não exista na respectiva lista 11

Inserção ( v Insere_seq (int { if (N == (maxn -1)) overflow ; if (N!= 0) { pos = busca_sequencial (v); if ( pos == N) { L[pos] = v; N++; } } else { L[0] = v; N++;} } Complexidade:? 12

Inserção ( v Insere_seq (int { if (N == (maxn -1)) overflow ; if (N!= 0) { pos = busca_sequencial (v); if ( pos == N) { L[pos] = v; N++; } } else { L[0] = v; N++;} } Complexidade: O (n). Por que? 13

Remoção! Problema: remover um valor v existente em uma lista seqüencial desordenada com N elementos 14

Remoção if (N!= 0) { indice = busca_sequencial (x); if (indice!= N){ elemento = a[indice]; for (i = indice; i < (N-1); i ++) L[i] = L[i + 1]; N--; } else elemento não encontrado ; }else underflow (?) (n) Complexidade: O 15

Busca em uma Lista Ordenada! Problema: buscar um valor v não existente em uma lista seqüencial ordenada com N elementos! o tempo de busca pode ser reduzido significantemente! devido a relação entre os elementos da lista! mesmo para um conjunto de elementos é grande 16

Busca em uma Lista Ordenada ( v ) Busca_Seqüencial_Ord { a[n].chave = v; do { pos = pos+1; } while ( v < a [pos].chave); if (v!= a[pos].chave) return(pos); return(n); } complexidade? 17

Busca Binária! Busca baseada em "dividir para conquistar"! divida um conjunto de elementos em duas partes! determine a qual dessas duas partes a chave pertence e se concentre nessa parte! use índices do array para delimitar a parte sendo trabalhada! ou seja:! compare com a chave do elemento do meio! se a chave comparada for menor, o elemento está na parte esquerda da lista, se maior, na parte direita! aplique o método recursivamente 18

Busca Binária ( v ) busca_binaria { e = 0; d = N-1; do { pos= (e + d)/ 2; if (v < a[pos].chave) d = pos-1; else e=pos+1; }while ((v!=a[pos].chave) && (e <= d)); } if (v== a[pos].chave) return(pos); else return(n); 19

Busca Binária Buscando 9 0 1 2 3 4 5 6 7 8 9 10 11 2 5 6 7 9 15 16 23 25 40 52 55 e pos d 20

Busca Binária Buscando 9 0 1 2 3 4 5 6 7 8 9 10 11 2 5 6 7 9 15 16 23 25 40 52 55 e pos d e pos d 21

Busca Binária Buscando 9 0 1 2 3 4 5 6 7 8 9 10 11 2 5 6 7 9 15 16 23 25 40 52 55 e pos d e pos d e/ pos d 22

Busca Binária Buscando 9 0 1 2 3 4 5 6 7 8 9 10 11 2 5 6 7 9 15 16 23 25 40 52 55 e pos d e pos d e/ pos d e/d pos 23

Busca Binária Complexidade: suponha que n = 2 k 1 o passo: uma lista de n elementos 2 o passo: uma lista de n/2 elementos 3 o passo: uma lista de n/4 elementos... k-ésimo passo: uma lista de n/2 (k-1) elementos (k+1)-ésimo passo: uma lista de n/2 k elementos que na verdade tem somente 1 elemento " n/2 k = 1 " k = log n ( n " log n passos " O(log 24

Inserção em Lista Ordenada! Problema: inserção de um valor v em uma lista de elementos ordenada por chave, caso esse elemento não se encontre na lista! Passos:! busca! inserção na posição retornada! Complexidade: O(n). Por que? Não foi busca binária? Obs.: remoção é equivalente 25

Complexidade Média - Busca Binária! Comportamente médio do algoritmo de busca binária! q - probabilidade de sucesso da busca! (1-q) - probabilidade de não achar L[0] L[1] L[2]... L[n-1] R[0] R[1] R[2] R[n-1] R[n] 26

Complexidade Média - Busca Binária! complexidade média = número de passos da busca com sucesso + busca sem sucesso! busca com sucesso! são n possibilidades de ter sucesso! mesma probabilidade para qualquer elemento: q/n! busca sem sucesso! intervalo R[i] L[i-1] < v < L[i]! a probabilidade é a mesma para qualquer intervalo ( q)/(n+1 (1- = 27

Complexidade Média - Busca Binária ( k+1 ) (q/n)k + [(1-q)/(n+1)] (n-q+2)/2 28