listas estáticas - 0.5cmscc0202 - algoritmos e estruturas...
TRANSCRIPT
![Page 1: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/1.jpg)
Listas Estáticas
Listas Estáticas
SCC0202 - Algoritmos e Estruturas de Dados I
Prof. Fernando V. Paulovich*Baseado no material do Prof. Gustavo Batista
http://www.icmc.usp.br/~paulovic
Instituto de Ciências Matemáticas e de Computação (ICMC)Universidade de São Paulo (USP)
17 de agosto de 2010
![Page 2: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/2.jpg)
Listas Estáticas
Conceitos Básicos
Sumário
1 Conceitos Básicos
2 Implementação Estática de Listas
3 Listas Estáticas Ordenadas
4 Busca em Listas Estáticas
5 Conclusão
![Page 3: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/3.jpg)
Listas Estáticas
Conceitos Básicos
Sumário
1 Conceitos Básicos
2 Implementação Estática de Listas
3 Listas Estáticas Ordenadas
4 Busca em Listas Estáticas
5 Conclusão
![Page 4: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/4.jpg)
Listas Estáticas
Conceitos Básicos
Listas
De�nição
Listas são estruturas �exíveis que admitem as operaçõesde inserção, remoção e recuperação de itens
É uma sequencia de zero ou mais itens x1, x2, . . . , xn naqual xi é de um determinado tipo e n representa otamanho da lista
Sua principal propriedade estrutural diz respeito asposições relativas dos itens
Se n ≥ 1, x1 é o primeiro item e xn é o último
Em geral, xi precede xi+1 para i = 1, 2, . . . , n− 1 e xisucede xi−1 para i = 2, 3, . . . , n
![Page 5: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/5.jpg)
Listas Estáticas
Conceitos Básicos
Listas
De�nição
Listas são estruturas �exíveis que admitem as operaçõesde inserção, remoção e recuperação de itens
É uma sequencia de zero ou mais itens x1, x2, . . . , xn naqual xi é de um determinado tipo e n representa otamanho da lista
Sua principal propriedade estrutural diz respeito asposições relativas dos itens
Se n ≥ 1, x1 é o primeiro item e xn é o último
Em geral, xi precede xi+1 para i = 1, 2, . . . , n− 1 e xisucede xi−1 para i = 2, 3, . . . , n
![Page 6: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/6.jpg)
Listas Estáticas
Conceitos Básicos
Listas
De�nição
Listas são estruturas �exíveis que admitem as operaçõesde inserção, remoção e recuperação de itens
É uma sequencia de zero ou mais itens x1, x2, . . . , xn naqual xi é de um determinado tipo e n representa otamanho da lista
Sua principal propriedade estrutural diz respeito asposições relativas dos itens
Se n ≥ 1, x1 é o primeiro item e xn é o último
Em geral, xi precede xi+1 para i = 1, 2, . . . , n− 1 e xisucede xi−1 para i = 2, 3, . . . , n
![Page 7: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/7.jpg)
Listas Estáticas
Conceitos Básicos
Listas
De�nição
Listas são estruturas �exíveis que admitem as operaçõesde inserção, remoção e recuperação de itens
É uma sequencia de zero ou mais itens x1, x2, . . . , xn naqual xi é de um determinado tipo e n representa otamanho da lista
Sua principal propriedade estrutural diz respeito asposições relativas dos itens
Se n ≥ 1, x1 é o primeiro item e xn é o último
Em geral, xi precede xi+1 para i = 1, 2, . . . , n− 1 e xisucede xi−1 para i = 2, 3, . . . , n
![Page 8: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/8.jpg)
Listas Estáticas
Conceitos Básicos
Listas
De�nição
Listas são estruturas �exíveis que admitem as operaçõesde inserção, remoção e recuperação de itens
É uma sequencia de zero ou mais itens x1, x2, . . . , xn naqual xi é de um determinado tipo e n representa otamanho da lista
Sua principal propriedade estrutural diz respeito asposições relativas dos itens
Se n ≥ 1, x1 é o primeiro item e xn é o último
Em geral, xi precede xi+1 para i = 1, 2, . . . , n− 1 e xisucede xi−1 para i = 2, 3, . . . , n
![Page 9: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/9.jpg)
Listas Estáticas
Conceitos Básicos
Listas
Aplicação
Diversos tipos de aplicações requerem uma listaLista telefônica
Lista de tarefas
Gerência de memória
Simulação
Compiladores, etc.
![Page 10: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/10.jpg)
Listas Estáticas
Conceitos Básicos
TAD Listas
Tipo Abstrato de Dados
Vamos de�nir um TAD com as principais operações sobreuma lista
Para simpli�car vamos de�nir apenas as operações
principais, posteriormente, outras operações podem ser
de�nidas
![Page 11: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/11.jpg)
Listas Estáticas
Conceitos Básicos
TAD Listas
Principais operações
Criar listaLimpar listaInserir item (última posição)Inserir item (por posição)Remover item (última posição)Recuperar item (dado uma chave)Recuperar item (por posição)Contar número de itensVeri�car se a lista está vaziaVeri�car se a lista está cheiaImprime lista
![Page 12: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/12.jpg)
Listas Estáticas
Conceitos Básicos
TAD Listas I
Criar lista
Pré-condição: nenhuma
Pós-condição: inicia a estrutura de dados
Limpar lista
Pré-condição: nenhuma
Pós-condição: coloca a estrutura de dados no estadoinicial
![Page 13: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/13.jpg)
Listas Estáticas
Conceitos Básicos
TAD Listas II
Inserir item (última posição)
Pré-condição: a lista não está cheia
Pós-condição: insere um item na última posição, retornatrue se a operação foi executada com sucesso, false casocontrário
Inserir item (por posição)
Pré-condição: a lista não está cheia
Pós-condição: insere um item na posição informada, quedeve estar dentro da lista, retorna true se a operação foiexecutada com sucesso, false caso contrário
![Page 14: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/14.jpg)
Listas Estáticas
Conceitos Básicos
TAD Listas III
Remover item (por posição)
Pré-condição: uma posição válida da lista é informada
Pós-condição: o item na posição fornecida é removido dalista, retorna true se a operação foi executada comsucesso, false caso contrário
Recuperar item (dado uma chave)
Pré-condição: nenhuma
Pós-condição: recupera o item dado uma chave, retornatrue se a operação foi executada com sucesso, false casocontrário
![Page 15: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/15.jpg)
Listas Estáticas
Conceitos Básicos
TAD Listas IV
Recuperar item (por posição)
Pré-condição: uma posição válida da lista é informada
Pós-condição: recupera o item na posição fornecida,retorna true se a operação foi executada com sucesso,false caso contrário
Contar número de itens
Pré-condição: nenhuma
Pós-condição: retorna o número de itens na lista
![Page 16: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/16.jpg)
Listas Estáticas
Conceitos Básicos
TAD Listas V
Veri�car se a lista está vazia
Pré-condição: nenhuma
Pós-condição: retorna true se a lista estiver vazia e falsecaso-contrário
Veri�car se a lista está cheia
Pré-condição: nenhuma
Pós-condição: retorna true se a lista estiver cheia e falsecaso-contrário
![Page 17: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/17.jpg)
Listas Estáticas
Conceitos Básicos
TAD Listas VI
Imprime lista
Pré-condição: nenhuma
Pós-condição: imprime na tela os itens da lista
![Page 18: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/18.jpg)
Listas Estáticas
Conceitos Básicos
TAD Listas
Como implementar o TAD Listas?
Basicamente existem duas formas
Estática (utilizando vetores)
Dinâmica (utilizando listas ligadas)
![Page 19: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/19.jpg)
Listas Estáticas
Implementação Estática de Listas
Sumário
1 Conceitos Básicos
2 Implementação Estática de Listas
3 Listas Estáticas Ordenadas
4 Busca em Listas Estáticas
5 Conclusão
![Page 20: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/20.jpg)
Listas Estáticas
Implementação Estática de Listas
Listas - Implementação Estática
Características
Os itens da lista são armazenados em posições contíguasde memória
A lista pode ser percorrida em qualquer direção
A inserção de um novo item pode ser realizada após oúltimo item com custo constante
![Page 21: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/21.jpg)
Listas Estáticas
Implementação Estática de Listas
Listas - Implementação Estática
Características
Os itens da lista são armazenados em posições contíguasde memória
A lista pode ser percorrida em qualquer direção
A inserção de um novo item pode ser realizada após oúltimo item com custo constante
![Page 22: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/22.jpg)
Listas Estáticas
Implementação Estática de Listas
Listas - Implementação Estática
Características
Os itens da lista são armazenados em posições contíguasde memória
A lista pode ser percorrida em qualquer direção
A inserção de um novo item pode ser realizada após oúltimo item com custo constante
![Page 23: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/23.jpg)
Listas Estáticas
Implementação Estática de Listas
Listas - Implementação Estática
1 #ifndef LISTAESTATICA_H_INCLUDED
2 #define LISTAESTATICA_H_INCLUDED
3
4 #define TAM 100
5
6 //representa o item armazenado7 typedef struct {
8 int chave;
9 int valor;
10 } ITEM;
11
12 //representa a lista de itens13 typedef struct {
14 ITEM itens[TAM];
15 int fim;
16 } LISTA;
17
18 void criar(LISTA *lista);
19 void imprimir(LISTA *lista);
20 int vazia(LISTA *lista);
21 int cheia(LISTA *lista);
22 int inserir_fim(LISTA *lista, ITEM *item);
23 int inserir_posicao(LISTA *lista, int pos, ITEM *item);
24 int remover(LISTA *lista, int pos);
25 int tamanho(LISTA *lista);
26
27 #endif // LISTAESTATICA_H_INCLUDED
![Page 24: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/24.jpg)
Listas Estáticas
Implementação Estática de Listas
Listas - Implementação Estática
ExercíciosInserir um item na posição i
Problema do descolamento de itens
![Page 25: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/25.jpg)
Listas Estáticas
Implementação Estática de Listas
Implementação da Inserção no Meio da Lista
1 int inserir_posicao(LISTA *lista, int pos, ITEM *item) {
2 int i;
3
4 //veri�ca se existe espaço e se a posição está na lista5 if (!cheia(lista) && pos <= lista->fim + 1) {
6 for (i = lista->fim; i >= pos; i--) { //movo os itens7 lista->itens[i + 1] = lista->itens[i];
8 }
9
10 lista->itens[pos] = *item; //insiro novo item11 lista->fim++; //incremento tamanho12
13 return 1;
14 } else {
15 return 0;
16 }
17 }
![Page 26: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/26.jpg)
Listas Estáticas
Implementação Estática de Listas
Listas - Implementação Estática
Exercícios
Implemente uma função para retirar itens da lista dadouma posição
1 int remover(LISTA *lista, int pos){
2 ...
3 }
![Page 27: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/27.jpg)
Listas Estáticas
Implementação Estática de Listas
Listas - Implementação Estática
Exercícios
Crie funções que implementem as seguintes operações:
Veri�car se a lista L está ordenada (crescente oudecrescente)Fazer uma cópia da Lista L1 em outra L2Fazer uma cópia da Lista L1 em L2, eliminando repetidosInverter L1, colocando o resultado em L2Inverter a própria L1Intercalar L1 com L2, gerando L3 ordenada (considereL1 e L2 ordenadas)Eliminar de L1 todas as ocorrências de um dado item (L1está ordenada)
![Page 28: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/28.jpg)
Listas Estáticas
Listas Estáticas Ordenadas
Sumário
1 Conceitos Básicos
2 Implementação Estática de Listas
3 Listas Estáticas Ordenadas
4 Busca em Listas Estáticas
5 Conclusão
![Page 29: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/29.jpg)
Listas Estáticas
Listas Estáticas Ordenadas
Listas Ordenadas
Características
Uma lista pode ser mantida em ordemcrescente/decrescente segundo o valor de algumachave
Essa ordem facilita a pesquisa de itens
Por outro lado, a inserção e remoção são maiscomplexas pois deve manter os itens ordenados
![Page 30: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/30.jpg)
Listas Estáticas
Listas Estáticas Ordenadas
Listas Ordenadas
Características
Uma lista pode ser mantida em ordemcrescente/decrescente segundo o valor de algumachave
Essa ordem facilita a pesquisa de itens
Por outro lado, a inserção e remoção são maiscomplexas pois deve manter os itens ordenados
![Page 31: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/31.jpg)
Listas Estáticas
Listas Estáticas Ordenadas
Listas Ordenadas
Características
Uma lista pode ser mantida em ordemcrescente/decrescente segundo o valor de algumachave
Essa ordem facilita a pesquisa de itens
Por outro lado, a inserção e remoção são maiscomplexas pois deve manter os itens ordenados
![Page 32: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/32.jpg)
Listas Estáticas
Listas Estáticas Ordenadas
TAD Listas Ordenadas
Tipo Abstrato de Dados
O TAD listas ordenadas é o mesmo do TAD listas, apenasdifere na implementaçãoAs operações diferente serão a inclusão e inserção de itens
Inserir item
Pré-condição: a lista não está cheiaPós-condição: insere um item em uma posição tal que alista é mantida ordenada
Remover item (por posição)
Pré-condição: uma posição válida da lista é informadaPós-condição: o item na posição fornecida é removido dalista, a lista é mantida ordenada
![Page 33: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/33.jpg)
Listas Estáticas
Listas Estáticas Ordenadas
TAD Listas Ordenadas
Tipo Abstrato de Dados
O TAD listas ordenadas é o mesmo do TAD listas, apenasdifere na implementaçãoAs operações diferente serão a inclusão e inserção de itens
Inserir item
Pré-condição: a lista não está cheiaPós-condição: insere um item em uma posição tal que alista é mantida ordenada
Remover item (por posição)
Pré-condição: uma posição válida da lista é informadaPós-condição: o item na posição fornecida é removido dalista, a lista é mantida ordenada
![Page 34: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/34.jpg)
Listas Estáticas
Listas Estáticas Ordenadas
TAD Listas Ordenadas
Tipo Abstrato de Dados
O TAD listas ordenadas é o mesmo do TAD listas, apenasdifere na implementaçãoAs operações diferente serão a inclusão e inserção de itens
Inserir item
Pré-condição: a lista não está cheiaPós-condição: insere um item em uma posição tal que alista é mantida ordenada
Remover item (por posição)
Pré-condição: uma posição válida da lista é informadaPós-condição: o item na posição fornecida é removido dalista, a lista é mantida ordenada
![Page 35: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/35.jpg)
Listas Estáticas
Listas Estáticas Ordenadas
Inserção Ordenada
Exemplo de inserção ordenada
![Page 36: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/36.jpg)
Listas Estáticas
Listas Estáticas Ordenadas
Inserção Ordenada
Exemplo de inserção ordenada
![Page 37: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/37.jpg)
Listas Estáticas
Listas Estáticas Ordenadas
Inserção Ordenada
Exemplo de inserção ordenada
![Page 38: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/38.jpg)
Listas Estáticas
Listas Estáticas Ordenadas
Inserção Ordenada
Exemplo de inserção ordenada
![Page 39: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/39.jpg)
Listas Estáticas
Listas Estáticas Ordenadas
Inserção Ordenada
Exemplo de inserção ordenada
![Page 40: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/40.jpg)
Listas Estáticas
Listas Estáticas Ordenadas
Implementação Inserção Ordenada
1 int inserir_ordenado(LISTA *lista, ITEM *item) {
2 if (!cheia(lista)) { //veri�ca se existe espaço3 int pos = lista->fim+1;
4
5 //move os itens até encontrar a posição de inserção6 while (pos > 0 && lista->itens[pos-1].chave > item->chave) {
7 lista->itens[pos] = lista->itens[pos-1];
8 pos--;
9 }
10
11 lista->itens[pos] = *item; //insire novo item12 lista->fim++; //incrementa tamanho da lista13 return 1;
14 }
15
16 return 0;
17 }
![Page 41: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/41.jpg)
Listas Estáticas
Listas Estáticas Ordenadas
Implementação Remoção Ordenada
Exercícios
Implemente a remoção de itens de uma lista ordenada -mantendo a ordenação após a eliminação.
1 int remover(LISTA *lista, int pos){
2 ...
3 }
![Page 42: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/42.jpg)
Listas Estáticas
Busca em Listas Estáticas
Sumário
1 Conceitos Básicos
2 Implementação Estática de Listas
3 Listas Estáticas Ordenadas
4 Busca em Listas Estáticas
5 Conclusão
![Page 43: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/43.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca em Listas Estáticas
Introdução
Uma tarefa comum a ser executada sobre listas é a buscade itens dado uma chave
No caso da lista não ordenada, a busca serásequencial (consultar todos os elementos)
Porém, com uma lista ordenada, diferentes estratégiaspodem ser aplicadas que aceleram essa busca
Busca sequencial �otimizada�
Busca binária
![Page 44: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/44.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca em Listas Estáticas
Introdução
Uma tarefa comum a ser executada sobre listas é a buscade itens dado uma chave
No caso da lista não ordenada, a busca serásequencial (consultar todos os elementos)
Porém, com uma lista ordenada, diferentes estratégiaspodem ser aplicadas que aceleram essa busca
Busca sequencial �otimizada�
Busca binária
![Page 45: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/45.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca em Listas Estáticas
Introdução
Uma tarefa comum a ser executada sobre listas é a buscade itens dado uma chave
No caso da lista não ordenada, a busca serásequencial (consultar todos os elementos)
Porém, com uma lista ordenada, diferentes estratégiaspodem ser aplicadas que aceleram essa busca
Busca sequencial �otimizada�
Busca binária
![Page 46: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/46.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca em Listas Estáticas
Introdução
Uma tarefa comum a ser executada sobre listas é a buscade itens dado uma chave
No caso da lista não ordenada, a busca serásequencial (consultar todos os elementos)
Porém, com uma lista ordenada, diferentes estratégiaspodem ser aplicadas que aceleram essa busca
Busca sequencial �otimizada�
Busca binária
![Page 47: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/47.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca em Listas Estáticas
Introdução
Uma tarefa comum a ser executada sobre listas é a buscade itens dado uma chave
No caso da lista não ordenada, a busca serásequencial (consultar todos os elementos)
Porém, com uma lista ordenada, diferentes estratégiaspodem ser aplicadas que aceleram essa busca
Busca sequencial �otimizada�
Busca binária
![Page 48: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/48.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Sequencial
Busca sequencial
Na busca sequencial, a ideia é procurar um elemento quetenha uma determinada chave, começando do início dalista, e parar quando a lista terminar ou quando oelemento for encontrado
![Page 49: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/49.jpg)
Listas Estáticas
Busca em Listas Estáticas
Implementação Busca Sequencial
1 int busca_sequencial(LISTA *lista, int chave, ITEM *item) {
2 int i;
3
4 for (i = 0; i <= lista->fim; i++) { //pecorre a lista5 if (lista->itens[i].chave == chave) { //se encontrar a chave6 *item = lista->itens[i]; //armazeno o elemento7 return 1; //indica que encontrou8 } else if (lista->itens[i].chave > chave) { //se a chave é maior9 return 0; //indica que não encontrou
10 }
11 }
12
13 return 0; //indica que não encontrou14 }
![Page 50: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/50.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Sequencial (Ordenada)
Quando os elementos estão ordenados, a busca sequencialpode ser �otimizada� (acelerada)
Vejamos o seguinte exemplo
![Page 51: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/51.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Sequencial (Ordenada)
Quando os elementos estão ordenados, a busca sequencialpode ser �otimizada� (acelerada)
Vejamos o seguinte exemplo
![Page 52: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/52.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Sequencial (Ordenada)
Exemplo 1
procurar pelo valor 4
![Page 53: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/53.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Sequencial (Ordenada)
Exemplo 1
procurar pelo valor 4
![Page 54: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/54.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Sequencial (Ordenada)
Exemplo 1
procurar pelo valor 4
![Page 55: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/55.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Sequencial (Ordenada)
Exemplo 2
procurar pelo valor 8
![Page 56: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/56.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Sequencial (Ordenada)
Exemplo 2
procurar pelo valor 8
![Page 57: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/57.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Sequencial (Ordenada)
Exemplo 2
procurar pelo valor 8
![Page 58: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/58.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Sequencial (Ordenada)
Exemplo 2
procurar pelo valor 8
![Page 59: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/59.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Sequencial (Ordenada)
Exemplo 2
procurar pelo valor 8
![Page 60: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/60.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Sequencial (Ordenada)
A lista ordenada permite realizar buscas sequenciaismais rápidas uma vez que, caso a chave procurada nãoexista, pode-se parar a busca tão logo se encontre umelemento com chave maior que a procurada
Entretanto, essa melhoria não altera a complexidadeda busca sequencial, que ainda é O(n). Porque?
![Page 61: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/61.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Sequencial (Ordenada)
A lista ordenada permite realizar buscas sequenciaismais rápidas uma vez que, caso a chave procurada nãoexista, pode-se parar a busca tão logo se encontre umelemento com chave maior que a procurada
Entretanto, essa melhoria não altera a complexidadeda busca sequencial, que ainda é O(n). Porque?
![Page 62: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/62.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Sequencial (Ordenada)
A lista ordenada permite realizar buscas sequenciaismais rápidas uma vez que, caso a chave procurada nãoexista, pode-se parar a busca tão logo se encontre umelemento com chave maior que a procurada
Entretanto, essa melhoria não altera a complexidadeda busca sequencial, que ainda é O(n). Porque?
![Page 63: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/63.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
A busca binária é um algoritmo de busca maisso�sticado e bem mais e�ciente que a busca sequencial
Entretanto, a busca binária somente pode seraplicada em estruturas que permitem acessar cadaelemento em tempo constante, tais como os vetores
A ideia é, a cada iteração, dividir o vetor ao meio edescartar metade do vetor
Essa ideia é melhor ilustrada utilizando uma �gura...
![Page 64: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/64.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
A busca binária é um algoritmo de busca maisso�sticado e bem mais e�ciente que a busca sequencial
Entretanto, a busca binária somente pode seraplicada em estruturas que permitem acessar cadaelemento em tempo constante, tais como os vetores
A ideia é, a cada iteração, dividir o vetor ao meio edescartar metade do vetor
Essa ideia é melhor ilustrada utilizando uma �gura...
![Page 65: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/65.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
A busca binária é um algoritmo de busca maisso�sticado e bem mais e�ciente que a busca sequencial
Entretanto, a busca binária somente pode seraplicada em estruturas que permitem acessar cadaelemento em tempo constante, tais como os vetores
A ideia é, a cada iteração, dividir o vetor ao meio edescartar metade do vetor
Essa ideia é melhor ilustrada utilizando uma �gura...
![Page 66: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/66.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
A busca binária é um algoritmo de busca maisso�sticado e bem mais e�ciente que a busca sequencial
Entretanto, a busca binária somente pode seraplicada em estruturas que permitem acessar cadaelemento em tempo constante, tais como os vetores
A ideia é, a cada iteração, dividir o vetor ao meio edescartar metade do vetor
Essa ideia é melhor ilustrada utilizando uma �gura...
![Page 67: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/67.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
Exemplo 1
Para procurar pelo valor 30
![Page 68: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/68.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
Exemplo 1
Para procurar pelo valor 30
![Page 69: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/69.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
Exemplo 1
Para procurar pelo valor 30
![Page 70: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/70.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
Exemplo 1
Para procurar pelo valor 30
![Page 71: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/71.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
Exemplo 1
Para procurar pelo valor 30
![Page 72: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/72.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
Exemplo 1
Para procurar pelo valor 30
![Page 73: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/73.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
Exemplo 1
Para procurar pelo valor 30
![Page 74: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/74.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
Exemplo 2
Para procurar pelo valor 7 (inexistente!)
![Page 75: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/75.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
Exemplo 2
Para procurar pelo valor 7 (inexistente!)
![Page 76: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/76.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
Exemplo 2
Para procurar pelo valor 7 (inexistente!)
![Page 77: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/77.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
Exemplo 2
Para procurar pelo valor 7 (inexistente!)
![Page 78: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/78.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
Exemplo 2
Para procurar pelo valor 7 (inexistente!)
![Page 79: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/79.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
Exemplo 2
Para procurar pelo valor 7 (inexistente!)
![Page 80: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/80.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
É importante lembrar que
Busca binária somente funciona em vetores ordenados
Busca sequencial funciona com vetores ordenados ou não
A busca binária é muito e�ciente. Ela é O(log2 n). Paran = 1.000.000, aproximadamente 20 comparações sãonecessárias
![Page 81: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/81.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
É importante lembrar queBusca binária somente funciona em vetores ordenados
Busca sequencial funciona com vetores ordenados ou não
A busca binária é muito e�ciente. Ela é O(log2 n). Paran = 1.000.000, aproximadamente 20 comparações sãonecessárias
![Page 82: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/82.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
É importante lembrar queBusca binária somente funciona em vetores ordenados
Busca sequencial funciona com vetores ordenados ou não
A busca binária é muito e�ciente. Ela é O(log2 n). Paran = 1.000.000, aproximadamente 20 comparações sãonecessárias
![Page 83: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/83.jpg)
Listas Estáticas
Busca em Listas Estáticas
Busca Binária
É importante lembrar queBusca binária somente funciona em vetores ordenados
Busca sequencial funciona com vetores ordenados ou não
A busca binária é muito e�ciente. Ela é O(log2 n). Paran = 1.000.000, aproximadamente 20 comparações sãonecessárias
![Page 84: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/84.jpg)
Listas Estáticas
Busca em Listas Estáticas
Implementação Busca Binária
1 int busca_binaria(LISTA *lista, int chave, ITEM *item) {
2 int esq = 0;
3 int dir = lista->fim;
4
5 while (esq <= dir) {
6 int meio = (esq + dir) / 2; //calcula meio do vetor7
8 if (lista->itens[meio].chave == chave) { //encontrou a chave9 *item = lista->itens[meio];
10 return 1;
11 }
12
13 if (lista->itens[meio].chave > chave) { //o meio é maior que a ←↩chave
14 dir = meio - 1; //desconsidero os itens maiores que o meio15 } else {
16 esq = meio + 1; //desconsidero os itens menores que o meio17 }
18 }
19
20 return 0;
21 }
![Page 85: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/85.jpg)
Listas Estáticas
Busca em Listas Estáticas
Exercício
Exercício
Implemente a busca binária utilizando um procedimentorecursivo
![Page 86: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/86.jpg)
Listas Estáticas
Conclusão
Sumário
1 Conceitos Básicos
2 Implementação Estática de Listas
3 Listas Estáticas Ordenadas
4 Busca em Listas Estáticas
5 Conclusão
![Page 87: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/87.jpg)
Listas Estáticas
Conclusão
Pontos fortes e fracos
Pontos Fortes
Tempo constante de acesso aos dados
Pontos Fracos
Custo para inserir e retirar elementos da lista, dada umaposição fornecida pelo usuário
Tamanho máximo da lista é (dependendo da linguagem)de�nido em tempo de compilação
![Page 88: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/88.jpg)
Listas Estáticas
Conclusão
Quando utilizar...
Quando utilizar...
Essa implementação simples é mais comumente utilizadas emcertas situações:
Listas pequenas
Tamanho máximo da lista é conhecido
Poucas ocorrências de utilização dos métodos de inserçãoe remoção, dada uma posição de�nida pelo usuário
![Page 89: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/89.jpg)
Listas Estáticas
Conclusão
Quando utilizar...
Quando utilizar...
Essa implementação simples é mais comumente utilizadas emcertas situações:
Listas pequenas
Tamanho máximo da lista é conhecido
Poucas ocorrências de utilização dos métodos de inserçãoe remoção, dada uma posição de�nida pelo usuário
![Page 90: Listas Estáticas - 0.5cmSCC0202 - Algoritmos e Estruturas ...paulovic/aulas/ED-I/SCC0202-aula-03-Listas_e... · TAD Listas Tipo Abstrato de Dados Vamos de nir um ADT com as principais](https://reader034.vdocuments.com.br/reader034/viewer/2022052610/5c12e4fb09d3f2587a8bcd48/html5/thumbnails/90.jpg)
Listas Estáticas
Conclusão
Quando utilizar...
Quando utilizar...
Essa implementação simples é mais comumente utilizadas emcertas situações:
Listas pequenas
Tamanho máximo da lista é conhecido
Poucas ocorrências de utilização dos métodos de inserçãoe remoção, dada uma posição de�nida pelo usuário