SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
Pedro Valente | Sónia Sobral
[pvalente|scrls]@upt.pt
26/11/2015
Algoritmia e Programação
Ordenação e Pesquisa
IMP.GE.87.0
Licenciatura em Informática 1º Ano, 1º Semestre
Licenciatura em Tecnologias e Sistemas de Informação 1º Ano, 1º Semestre
Agenda
Ordenação de
vetores
• Ordenação por
troca
• Ordenação Seleção
• Ordenação por
partição (QuickSort)
• Ordenação por
Inserção
Pesquisa
• Pesquisa
Sequencial
• Pesquisa Binária
2
Objetivos
Contextualizar ordenação e pesquisa
Explorar os algoritmos de pesquisa
Sequencial e Binária
Apresentar os algoritmos de ordenação
por Troca, Seleção e por Inserção
3
introdução
 Um vetor (também vulgarmente conhecido
por Array), tem a capacidade em armazenar
um conjunto de elementos consecutivos
 Podem ser acedidos individualmente a partir de
um único nome (conceito de variável).
 Todos os valores do Vetor estão
armazenados em memória (no formato
lista).
 E em alguns casos, é necessário ordenar
para posterior pesquisa.
4
Introdução
Ordenação
• Operação realizada sobre registros
• Objetivo: organizar sobre determinada ordem
Pesquisa
• Operação realizada sobre registros
• Objetivo: localizar um registro
• Chave: campo ou chave presente em todos
os registros
5
MÉTODOS DE ORDENAÇÃO
Quando trabalhamos com vetores (mais especificamente matrizes), existem
ocasiões em que necessitamos ordena-los para facilitar as pesquisas.
• Podemos ordenar os valores de uma matriz do mais baixo para o mais alto (ordem crescente)
ou ainda mais alto para o mais baixo (ordem crescente).
Sem esse tipo de ordenação toda e qualquer pesquisa numa matriz seria
muito difícil e demorada.
Basicamente o que teria de se fazer é posicionar o “indice” no topo da matriz
e ir comparando cada um dos elementos da matriz com o valor procurado.
Para uma matriz pequena, esse "método" não é algo tão complexo e talvez
seja o mais utilizado.
• Mas para matrizes um pouco maiores, esse método consome muito tempo de processamento,
tempo este que muitas vezes o sistema não dispões.
Nestes casos o melhor é ordenar a matriz para somente então começar
as pesquisas.
6
MÉTODOS DE ORDENAÇÃO
Mas a ordenação, não irá também consumir tempo de
processamento?!?
• Vai, mas apenas é realizada uma só vez! 
• Durante a inicialização, ou quando o vetor sofre modificações e/ou
atualizações
O tempo de processamento realizado numa ordenação
é muito menor que o tempo de duas pesquisas feitas
em uma base de dados desordenada.
• Sendo assim, vale a pena “ordenar”!
7
Ordenação de Vetores
 Problema (ordenação de vetor)
 Dado um vetor (𝑣) com N elementos, rearranjar
esses elementos por ordem crescente.
 ou melhor, por ordem não decrescente, porque podem
existir valores repetidos.
 Ideias base:
 Existem diversos algoritmos de ordenação que são
muito simples, mas com processamento mais
demorado (ex: ordenação por Inserção, BubbleSort)
 Existem algoritmos de ordenação mais difíceis de
codificar que tem processamento menor.
8
Algoritmos de Ordenação de Vetores
 Ordenação por Troca (BubbleSort)
 Ordenação por Seleção
 Ordenação por Inserção
 Ordenação por Partição (QuickSort)
 Outros algoritmos:
 ShellSort – variante mais popular
 MergeSort
 HeapSort
9
Ordenação por Troca (BubbleSort)
 Características:
 O mais simples
 O mais lento
 Algoritmo: Bolha (bubble Sort)
 Compara dois elementos
 Se o elemento da esquerda for maior, troca-os
 Mover uma posição à direita
 Nota: acumula os elementos ordenados no
final do vetor
10
Ordenação por Troca (BubbleSort)
 Fluxograma algoritmo
11
Ordenação por Troca (BubbleSort)
 Código C
12
Output:
Ver demos 1 e 2
Ordenação por Seleção
 Características
 Relativamente simples
 Mais rápido que a ordenação por troca
 Mesmo número de comparações
 Número menos de trocas
 Mais indicado quando o tempo de troca for
significativo
 Método:
 Percorre o vetor e seleciona o menor elemento
 Realiza a troca: transfere o menor elemento
para o início
 Nota: acumula os elementos ordenados no
inicio do vetor
13
Ordenação por Seleção
14 More info: https://pt.wikipedia.org/wiki/Selection_sort
demo2
Ordenação por seleção
 Código em C
15
Output:
Ver demo
Ordenação por Inserção
 Algoritmo iterativo de N-1 passos
 Em cada passo 𝑝:
 Coloca-se um elemento na ordem, sabendo que elementos
dos índices inferiores(entre 0 e 𝑝-1) já estão ordenados.
 Algoritmo:
1. Considera-se o vetor dividido em dois sub-vetores
(esquerdo e direito), com o da esquerda ordenado e o da
direita desordenado
2. Começa-se com um elemento apenas no sub-vetor da
esquerda
3. Move-se um elemento de cada vez do sub-vetor da direita
para o sub-vetor da esquerda, inserindo-o na posição
correta por forma a manter o sub-vetor da esquerda
ordenando.
4. Termina-se quando o sub-vetor da direita fica vazio
16
Mais info: https://web.fe.up.pt/~prog2/docs/vectorPesqOrd.pdf
Ordenação por Inserção
17
Ordenação por Inserção – código C
18
Output: Ver demo
Ordenação por Partição (QuickSort)
Algoritmo (ordenação por partição):
• Caso básico: Se o número (𝑛) de elementos do vetor (𝑣) a ordenar for
0 ou 1, não é preciso fazer nada.
• Passo de partição:
• Escolher um elemento arbitrário (𝑥) do vetor (chamado pivot)
• Partir o vetor inicial em dois sub-vetores (esquerdo e direito), com
valores ≤ 𝑥 no sub-vetor esquerdo e valores ≥ 𝑥 no sub-vetor
direito
Algoritmo recursivo baseado na técnica divisão e
conquista
• quando parte do vetor a ordenar é de dimensão reduzida, usa um
método de ordenação mais simples (ex. ‘insertionSort’ )
19
Mais info: https://web.fe.up.pt/~prog2/docs/vectorPesqOrd.pdf
Ordenação por Partição (QuickSort)
20
i j
≤ 𝒙 ≥ 𝒙
Ordenação por Partição (QuickSort)
21
Escolha pivot
determina eficiência
Pior caso: pivot é o elemento
mais pequeno
Melhor caso: pivot é o elemento
médio
Caso médio: pivot corta vetor
arbitrariamente.
Escolha do pivot:
Um dos elementos extremos do
vetor
• Má escolha, se o vetor estiver ordenado
Elemento aleatório
• Envolve uso de mais uma função pesada
Mediana de três elementos
(extremos do vetor e ponto médio)
• Recomendado! 
Ordenação por Partição (QuickSort)
22
Output:
Ver demos 1 e 2
Nota: Uma forma de se fazer o
quickSort é considerar o primeiro
elemento como pivô
PESQUISA
Pesquisa sequencial e pesquisa binária
23
Pesquisa Sequencial
Problema (pesquisa de valor em vetor):
• Verificar se um valor existe no vetor e, no caso de existir, indicar a sua
posição.
• Possíveis variantes para o caso de vetores com valores repetidos:
• A) indicar a posição da primeira ocorrência
• B) indicar a posição da última ocorrência
• C) indicar a posição de uma ocorrência qualquer
Algoritmo (pesquisa sequencial):
• Percorre sequencialmente todas as posições o vetor, da primeira para a
última(a), ou da última para a primeira(b), até encontrar o valor pretendido ou
chegar ao fim do vetor:
• A) caso de pretenda saber a posição da primeira ocorrência
• B) caso se pretenda saber a posição da última ocorrência
Adequado para vetores não ordenados ou pequenos
24
Pesquisa binária
 Problema (pesquisa de valor em vetor
ordenado):
 Verifica se um valor(x) existe num vetor (v)
previamente ordenado e, no caso de existir,
indicar a sua posição
 No caso de vetores com valores repetidos,
consideramos a variante em que basta indicar a
posição de uma ocorrência qualquer
25
Pesquisa binária - algoritmo
Comparar o valor que se encontra a meio do vetor
com o valor procurado, podendo acontecer 3
cenários:
• É igual ao valor procurado -> esta encontrado
• É maior do que o valor procurado ->continuar a procura (mesmo
modo) no sub-vetor à esquerda da posição inspecionada
• É menor que o valor procurado -> continuar a procura (mesmo
modo) no sub-vetor à direita da posição inspecionada
Se o vetor a inspecionar se reduzir a um vetor vazio,
conclui-se que o valor procurado não existe.
26
Pesquisa binária - exemplo
27
Webgrafia
 https://pt.wikibooks.org/wiki/Programar_em_C/Algoritmos_de_ordena%
C3%A7%C3%A3o
 http://www.di.ubi.pt/~cbarrico/Disciplinas/ProgramacaoAlgoritmos/Down
loads/Teorica_Ordenacao_Recursiva.pdf
 http://www.programmingsimplified.com/c-program-examples
 [LER] http://epaperpress.com/sortsearch/download/sortsearch.pdf
28
IMP.GE.87.0

Mais conteúdo relacionado

Mais procurados

53392229 apostila-de-algoritmo-2009
53392229 apostila-de-algoritmo-200953392229 apostila-de-algoritmo-2009
53392229 apostila-de-algoritmo-2009starley lobo
 
Sorting method data structure
Sorting method data structureSorting method data structure
Sorting method data structuresunilchute1
 
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Leinylson Fontinele
 
Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1Pacc UAB
 
Aula 6 - Estruturas de seleção encadeada - parte 1
Aula 6 - Estruturas de seleção encadeada - parte 1Aula 6 - Estruturas de seleção encadeada - parte 1
Aula 6 - Estruturas de seleção encadeada - parte 1Pacc UAB
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
Estruturas de Dados - Árvores Multivias (Multiway Tree)
Estruturas de Dados - Árvores Multivias (Multiway Tree)Estruturas de Dados - Árvores Multivias (Multiway Tree)
Estruturas de Dados - Árvores Multivias (Multiway Tree)Erick Petrucelli
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Adriano Teixeira de Souza
 
Análise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoAnálise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoGustavo Carvalho
 
Análise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasAnálise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasDelacyr Ferreira
 
Lecture 2 data structures and algorithms
Lecture 2 data structures and algorithmsLecture 2 data structures and algorithms
Lecture 2 data structures and algorithmsAakash deep Singhal
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesaPacc UAB
 
Recursividade em linguagem C
Recursividade em linguagem CRecursividade em linguagem C
Recursividade em linguagem CLeonardo Lima
 

Mais procurados (20)

53392229 apostila-de-algoritmo-2009
53392229 apostila-de-algoritmo-200953392229 apostila-de-algoritmo-2009
53392229 apostila-de-algoritmo-2009
 
Sorting method data structure
Sorting method data structureSorting method data structure
Sorting method data structure
 
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
 
Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1
 
Aula 6 - Estruturas de seleção encadeada - parte 1
Aula 6 - Estruturas de seleção encadeada - parte 1Aula 6 - Estruturas de seleção encadeada - parte 1
Aula 6 - Estruturas de seleção encadeada - parte 1
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Estruturas de Dados - Árvores Multivias (Multiway Tree)
Estruturas de Dados - Árvores Multivias (Multiway Tree)Estruturas de Dados - Árvores Multivias (Multiway Tree)
Estruturas de Dados - Árvores Multivias (Multiway Tree)
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Insertion Sort
Insertion SortInsertion Sort
Insertion Sort
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Algoritmo recursivo
Algoritmo recursivoAlgoritmo recursivo
Algoritmo recursivo
 
Análise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoAnálise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenação
 
Análise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasAnálise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de Recorrências
 
Algoritmo - tipos de dados
Algoritmo - tipos de dadosAlgoritmo - tipos de dados
Algoritmo - tipos de dados
 
Lecture 2 data structures and algorithms
Lecture 2 data structures and algorithmsLecture 2 data structures and algorithms
Lecture 2 data structures and algorithms
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesa
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Algoritmos - Matrizes
Algoritmos - MatrizesAlgoritmos - Matrizes
Algoritmos - Matrizes
 
Recursividade em linguagem C
Recursividade em linguagem CRecursividade em linguagem C
Recursividade em linguagem C
 
Algoritmos - Vetores
Algoritmos - VetoresAlgoritmos - Vetores
Algoritmos - Vetores
 

Destaque

Ordenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de ChavesOrdenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de ChavesMauricio Volkweis Astiazara
 
Tutorial aed iii 001 - algoritmo de ordenação shellsort
Tutorial aed iii   001 - algoritmo de ordenação shellsortTutorial aed iii   001 - algoritmo de ordenação shellsort
Tutorial aed iii 001 - algoritmo de ordenação shellsortFlávio Freitas
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmosRicardo Bolanho
 
Apresentação linguagem cobol
Apresentação linguagem cobolApresentação linguagem cobol
Apresentação linguagem cobolLorranna Machado
 
Metodo de Ordenação Selection sort
Metodo de Ordenação Selection sortMetodo de Ordenação Selection sort
Metodo de Ordenação Selection sortLeno Oliveira
 
Análise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaAnálise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaDelacyr Ferreira
 
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempo
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempoAnálise de Algoritmos - Problemas, instâncias, algoritmos e tempo
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempoDelacyr Ferreira
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPDelacyr Ferreira
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeDelacyr Ferreira
 
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Universidade de São Paulo
 

Destaque (15)

Ordenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de ChavesOrdenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de Chaves
 
Tutorial aed iii 001 - algoritmo de ordenação shellsort
Tutorial aed iii   001 - algoritmo de ordenação shellsortTutorial aed iii   001 - algoritmo de ordenação shellsort
Tutorial aed iii 001 - algoritmo de ordenação shellsort
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
 
7 slides
7 slides7 slides
7 slides
 
Apresentação linguagem cobol
Apresentação linguagem cobolApresentação linguagem cobol
Apresentação linguagem cobol
 
Analise Algoritmos
Analise AlgoritmosAnalise Algoritmos
Analise Algoritmos
 
Metodo de Ordenação Selection sort
Metodo de Ordenação Selection sortMetodo de Ordenação Selection sort
Metodo de Ordenação Selection sort
 
Ordenação por inserção
Ordenação por inserçãoOrdenação por inserção
Ordenação por inserção
 
Análise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaAnálise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise Assintótica
 
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempo
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempoAnálise de Algoritmos - Problemas, instâncias, algoritmos e tempo
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempo
 
Análise de Algoritmos
Análise de AlgoritmosAnálise de Algoritmos
Análise de Algoritmos
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NP
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - Recursividade
 
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
 
Cobol
CobolCobol
Cobol
 

Semelhante a Ordenação e Pesquisa Vetores

Algorimos De Ordenação
Algorimos De OrdenaçãoAlgorimos De Ordenação
Algorimos De OrdenaçãoBrian Supra
 
Trabalho de algoritmos
Trabalho de algoritmosTrabalho de algoritmos
Trabalho de algoritmosSandro Arpi
 
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em Cordenacao shellsort quicksort em C
ordenacao shellsort quicksort em CAlessandro Trevisan
 
Tutorial aed iii 006 - algoritmo de ordenação quicksort
Tutorial aed iii   006 - algoritmo de ordenação quicksortTutorial aed iii   006 - algoritmo de ordenação quicksort
Tutorial aed iii 006 - algoritmo de ordenação quicksortFlávio Freitas
 
Trabalho métodos de ordenação
Trabalho métodos de ordenaçãoTrabalho métodos de ordenação
Trabalho métodos de ordenaçãoDaiana de Ávila
 
Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)
Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)
Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)Leinylson Fontinele
 
Classificação de dados
Classificação de dadosClassificação de dados
Classificação de dadosFernando Vargas
 
Classe integer-float-byte-short-long-double
Classe integer-float-byte-short-long-doubleClasse integer-float-byte-short-long-double
Classe integer-float-byte-short-long-doublePAULO Moreira
 
Tutorial aed iii 003 - algoritmo de ordenação shellsort
Tutorial aed iii   003 - algoritmo de ordenação shellsortTutorial aed iii   003 - algoritmo de ordenação shellsort
Tutorial aed iii 003 - algoritmo de ordenação shellsortFlávio Freitas
 
Estruturas de Dados - Pilhas (Stack)
Estruturas de Dados - Pilhas (Stack)Estruturas de Dados - Pilhas (Stack)
Estruturas de Dados - Pilhas (Stack)Erick Petrucelli
 
Aulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAyrton Yagami
 
aula 10 logica de programacao
aula 10 logica de programacaoaula 10 logica de programacao
aula 10 logica de programacaoAislan Rafael
 

Semelhante a Ordenação e Pesquisa Vetores (20)

Algorimos De Ordenação
Algorimos De OrdenaçãoAlgorimos De Ordenação
Algorimos De Ordenação
 
Trabalho de algoritmos
Trabalho de algoritmosTrabalho de algoritmos
Trabalho de algoritmos
 
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em Cordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
 
Java: Collections
Java: CollectionsJava: Collections
Java: Collections
 
Tutorial aed iii 006 - algoritmo de ordenação quicksort
Tutorial aed iii   006 - algoritmo de ordenação quicksortTutorial aed iii   006 - algoritmo de ordenação quicksort
Tutorial aed iii 006 - algoritmo de ordenação quicksort
 
Aula 4
Aula 4 Aula 4
Aula 4
 
01
0101
01
 
Trabalho métodos de ordenação
Trabalho métodos de ordenaçãoTrabalho métodos de ordenação
Trabalho métodos de ordenação
 
Cap4
Cap4Cap4
Cap4
 
Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)
Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)
Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)
 
Lista_Encadeada.pptx
Lista_Encadeada.pptxLista_Encadeada.pptx
Lista_Encadeada.pptx
 
Arrays e Vetores
Arrays e VetoresArrays e Vetores
Arrays e Vetores
 
Classificação de dados
Classificação de dadosClassificação de dados
Classificação de dados
 
Classe integer-float-byte-short-long-double
Classe integer-float-byte-short-long-doubleClasse integer-float-byte-short-long-double
Classe integer-float-byte-short-long-double
 
Tutorial aed iii 003 - algoritmo de ordenação shellsort
Tutorial aed iii   003 - algoritmo de ordenação shellsortTutorial aed iii   003 - algoritmo de ordenação shellsort
Tutorial aed iii 003 - algoritmo de ordenação shellsort
 
Estruturas de Dados - Pilhas (Stack)
Estruturas de Dados - Pilhas (Stack)Estruturas de Dados - Pilhas (Stack)
Estruturas de Dados - Pilhas (Stack)
 
Seminário - Java Collections
Seminário - Java CollectionsSeminário - Java Collections
Seminário - Java Collections
 
Pged 04
Pged 04Pged 04
Pged 04
 
Aulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton Yagami
 
aula 10 logica de programacao
aula 10 logica de programacaoaula 10 logica de programacao
aula 10 logica de programacao
 

Mais de Pedro Valente

inovação tecnológica e a estratégia hoteleira
inovação tecnológica e a estratégia hoteleirainovação tecnológica e a estratégia hoteleira
inovação tecnológica e a estratégia hoteleiraPedro Valente
 
CSS Fundamentals: selectors and Properties
CSS Fundamentals: selectors and PropertiesCSS Fundamentals: selectors and Properties
CSS Fundamentals: selectors and PropertiesPedro Valente
 
Workshop -Regras de Escrita de Trabalhos
Workshop -Regras de Escrita de TrabalhosWorkshop -Regras de Escrita de Trabalhos
Workshop -Regras de Escrita de TrabalhosPedro Valente
 
25mixedsession IOT introductions
25mixedsession IOT introductions25mixedsession IOT introductions
25mixedsession IOT introductionsPedro Valente
 
Auditoria aos Sites dos Ministérios
Auditoria aos Sites dos MinistériosAuditoria aos Sites dos Ministérios
Auditoria aos Sites dos MinistériosPedro Valente
 
Utilizacao de meta modelos na representacao de informacao complexa
Utilizacao de meta modelos na representacao de informacao complexaUtilizacao de meta modelos na representacao de informacao complexa
Utilizacao de meta modelos na representacao de informacao complexaPedro Valente
 
Defesa tese-mestrado-pvalente
Defesa tese-mestrado-pvalenteDefesa tese-mestrado-pvalente
Defesa tese-mestrado-pvalentePedro Valente
 
Paams2011 pvalente-presentation-slides1
Paams2011 pvalente-presentation-slides1Paams2011 pvalente-presentation-slides1
Paams2011 pvalente-presentation-slides1Pedro Valente
 
Cisti10 pvalente-presentation-slides
Cisti10 pvalente-presentation-slidesCisti10 pvalente-presentation-slides
Cisti10 pvalente-presentation-slidesPedro Valente
 
JACK intelligent Agents - an framework overview
JACK intelligent Agents - an framework overviewJACK intelligent Agents - an framework overview
JACK intelligent Agents - an framework overviewPedro Valente
 
Phd defence-pvalente
Phd defence-pvalentePhd defence-pvalente
Phd defence-pvalentePedro Valente
 

Mais de Pedro Valente (11)

inovação tecnológica e a estratégia hoteleira
inovação tecnológica e a estratégia hoteleirainovação tecnológica e a estratégia hoteleira
inovação tecnológica e a estratégia hoteleira
 
CSS Fundamentals: selectors and Properties
CSS Fundamentals: selectors and PropertiesCSS Fundamentals: selectors and Properties
CSS Fundamentals: selectors and Properties
 
Workshop -Regras de Escrita de Trabalhos
Workshop -Regras de Escrita de TrabalhosWorkshop -Regras de Escrita de Trabalhos
Workshop -Regras de Escrita de Trabalhos
 
25mixedsession IOT introductions
25mixedsession IOT introductions25mixedsession IOT introductions
25mixedsession IOT introductions
 
Auditoria aos Sites dos Ministérios
Auditoria aos Sites dos MinistériosAuditoria aos Sites dos Ministérios
Auditoria aos Sites dos Ministérios
 
Utilizacao de meta modelos na representacao de informacao complexa
Utilizacao de meta modelos na representacao de informacao complexaUtilizacao de meta modelos na representacao de informacao complexa
Utilizacao de meta modelos na representacao de informacao complexa
 
Defesa tese-mestrado-pvalente
Defesa tese-mestrado-pvalenteDefesa tese-mestrado-pvalente
Defesa tese-mestrado-pvalente
 
Paams2011 pvalente-presentation-slides1
Paams2011 pvalente-presentation-slides1Paams2011 pvalente-presentation-slides1
Paams2011 pvalente-presentation-slides1
 
Cisti10 pvalente-presentation-slides
Cisti10 pvalente-presentation-slidesCisti10 pvalente-presentation-slides
Cisti10 pvalente-presentation-slides
 
JACK intelligent Agents - an framework overview
JACK intelligent Agents - an framework overviewJACK intelligent Agents - an framework overview
JACK intelligent Agents - an framework overview
 
Phd defence-pvalente
Phd defence-pvalentePhd defence-pvalente
Phd defence-pvalente
 

Ordenação e Pesquisa Vetores

  • 1. Pedro Valente | Sónia Sobral [pvalente|scrls]@upt.pt 26/11/2015 Algoritmia e Programação Ordenação e Pesquisa IMP.GE.87.0 Licenciatura em Informática 1º Ano, 1º Semestre Licenciatura em Tecnologias e Sistemas de Informação 1º Ano, 1º Semestre
  • 2. Agenda Ordenação de vetores • Ordenação por troca • Ordenação Seleção • Ordenação por partição (QuickSort) • Ordenação por Inserção Pesquisa • Pesquisa Sequencial • Pesquisa Binária 2
  • 3. Objetivos Contextualizar ordenação e pesquisa Explorar os algoritmos de pesquisa Sequencial e Binária Apresentar os algoritmos de ordenação por Troca, Seleção e por Inserção 3
  • 4. introdução  Um vetor (também vulgarmente conhecido por Array), tem a capacidade em armazenar um conjunto de elementos consecutivos  Podem ser acedidos individualmente a partir de um único nome (conceito de variável).  Todos os valores do Vetor estão armazenados em memória (no formato lista).  E em alguns casos, é necessário ordenar para posterior pesquisa. 4
  • 5. Introdução Ordenação • Operação realizada sobre registros • Objetivo: organizar sobre determinada ordem Pesquisa • Operação realizada sobre registros • Objetivo: localizar um registro • Chave: campo ou chave presente em todos os registros 5
  • 6. MÉTODOS DE ORDENAÇÃO Quando trabalhamos com vetores (mais especificamente matrizes), existem ocasiões em que necessitamos ordena-los para facilitar as pesquisas. • Podemos ordenar os valores de uma matriz do mais baixo para o mais alto (ordem crescente) ou ainda mais alto para o mais baixo (ordem crescente). Sem esse tipo de ordenação toda e qualquer pesquisa numa matriz seria muito difícil e demorada. Basicamente o que teria de se fazer é posicionar o “indice” no topo da matriz e ir comparando cada um dos elementos da matriz com o valor procurado. Para uma matriz pequena, esse "método" não é algo tão complexo e talvez seja o mais utilizado. • Mas para matrizes um pouco maiores, esse método consome muito tempo de processamento, tempo este que muitas vezes o sistema não dispões. Nestes casos o melhor é ordenar a matriz para somente então começar as pesquisas. 6
  • 7. MÉTODOS DE ORDENAÇÃO Mas a ordenação, não irá também consumir tempo de processamento?!? • Vai, mas apenas é realizada uma só vez!  • Durante a inicialização, ou quando o vetor sofre modificações e/ou atualizações O tempo de processamento realizado numa ordenação é muito menor que o tempo de duas pesquisas feitas em uma base de dados desordenada. • Sendo assim, vale a pena “ordenar”! 7
  • 8. Ordenação de Vetores  Problema (ordenação de vetor)  Dado um vetor (𝑣) com N elementos, rearranjar esses elementos por ordem crescente.  ou melhor, por ordem não decrescente, porque podem existir valores repetidos.  Ideias base:  Existem diversos algoritmos de ordenação que são muito simples, mas com processamento mais demorado (ex: ordenação por Inserção, BubbleSort)  Existem algoritmos de ordenação mais difíceis de codificar que tem processamento menor. 8
  • 9. Algoritmos de Ordenação de Vetores  Ordenação por Troca (BubbleSort)  Ordenação por Seleção  Ordenação por Inserção  Ordenação por Partição (QuickSort)  Outros algoritmos:  ShellSort – variante mais popular  MergeSort  HeapSort 9
  • 10. Ordenação por Troca (BubbleSort)  Características:  O mais simples  O mais lento  Algoritmo: Bolha (bubble Sort)  Compara dois elementos  Se o elemento da esquerda for maior, troca-os  Mover uma posição à direita  Nota: acumula os elementos ordenados no final do vetor 10
  • 11. Ordenação por Troca (BubbleSort)  Fluxograma algoritmo 11
  • 12. Ordenação por Troca (BubbleSort)  Código C 12 Output: Ver demos 1 e 2
  • 13. Ordenação por Seleção  Características  Relativamente simples  Mais rápido que a ordenação por troca  Mesmo número de comparações  Número menos de trocas  Mais indicado quando o tempo de troca for significativo  Método:  Percorre o vetor e seleciona o menor elemento  Realiza a troca: transfere o menor elemento para o início  Nota: acumula os elementos ordenados no inicio do vetor 13
  • 14. Ordenação por Seleção 14 More info: https://pt.wikipedia.org/wiki/Selection_sort demo2
  • 15. Ordenação por seleção  Código em C 15 Output: Ver demo
  • 16. Ordenação por Inserção  Algoritmo iterativo de N-1 passos  Em cada passo 𝑝:  Coloca-se um elemento na ordem, sabendo que elementos dos índices inferiores(entre 0 e 𝑝-1) já estão ordenados.  Algoritmo: 1. Considera-se o vetor dividido em dois sub-vetores (esquerdo e direito), com o da esquerda ordenado e o da direita desordenado 2. Começa-se com um elemento apenas no sub-vetor da esquerda 3. Move-se um elemento de cada vez do sub-vetor da direita para o sub-vetor da esquerda, inserindo-o na posição correta por forma a manter o sub-vetor da esquerda ordenando. 4. Termina-se quando o sub-vetor da direita fica vazio 16 Mais info: https://web.fe.up.pt/~prog2/docs/vectorPesqOrd.pdf
  • 18. Ordenação por Inserção – código C 18 Output: Ver demo
  • 19. Ordenação por Partição (QuickSort) Algoritmo (ordenação por partição): • Caso básico: Se o número (𝑛) de elementos do vetor (𝑣) a ordenar for 0 ou 1, não é preciso fazer nada. • Passo de partição: • Escolher um elemento arbitrário (𝑥) do vetor (chamado pivot) • Partir o vetor inicial em dois sub-vetores (esquerdo e direito), com valores ≤ 𝑥 no sub-vetor esquerdo e valores ≥ 𝑥 no sub-vetor direito Algoritmo recursivo baseado na técnica divisão e conquista • quando parte do vetor a ordenar é de dimensão reduzida, usa um método de ordenação mais simples (ex. ‘insertionSort’ ) 19 Mais info: https://web.fe.up.pt/~prog2/docs/vectorPesqOrd.pdf
  • 20. Ordenação por Partição (QuickSort) 20 i j ≤ 𝒙 ≥ 𝒙
  • 21. Ordenação por Partição (QuickSort) 21 Escolha pivot determina eficiência Pior caso: pivot é o elemento mais pequeno Melhor caso: pivot é o elemento médio Caso médio: pivot corta vetor arbitrariamente. Escolha do pivot: Um dos elementos extremos do vetor • Má escolha, se o vetor estiver ordenado Elemento aleatório • Envolve uso de mais uma função pesada Mediana de três elementos (extremos do vetor e ponto médio) • Recomendado! 
  • 22. Ordenação por Partição (QuickSort) 22 Output: Ver demos 1 e 2 Nota: Uma forma de se fazer o quickSort é considerar o primeiro elemento como pivô
  • 23. PESQUISA Pesquisa sequencial e pesquisa binária 23
  • 24. Pesquisa Sequencial Problema (pesquisa de valor em vetor): • Verificar se um valor existe no vetor e, no caso de existir, indicar a sua posição. • Possíveis variantes para o caso de vetores com valores repetidos: • A) indicar a posição da primeira ocorrência • B) indicar a posição da última ocorrência • C) indicar a posição de uma ocorrência qualquer Algoritmo (pesquisa sequencial): • Percorre sequencialmente todas as posições o vetor, da primeira para a última(a), ou da última para a primeira(b), até encontrar o valor pretendido ou chegar ao fim do vetor: • A) caso de pretenda saber a posição da primeira ocorrência • B) caso se pretenda saber a posição da última ocorrência Adequado para vetores não ordenados ou pequenos 24
  • 25. Pesquisa binária  Problema (pesquisa de valor em vetor ordenado):  Verifica se um valor(x) existe num vetor (v) previamente ordenado e, no caso de existir, indicar a sua posição  No caso de vetores com valores repetidos, consideramos a variante em que basta indicar a posição de uma ocorrência qualquer 25
  • 26. Pesquisa binária - algoritmo Comparar o valor que se encontra a meio do vetor com o valor procurado, podendo acontecer 3 cenários: • É igual ao valor procurado -> esta encontrado • É maior do que o valor procurado ->continuar a procura (mesmo modo) no sub-vetor à esquerda da posição inspecionada • É menor que o valor procurado -> continuar a procura (mesmo modo) no sub-vetor à direita da posição inspecionada Se o vetor a inspecionar se reduzir a um vetor vazio, conclui-se que o valor procurado não existe. 26
  • 27. Pesquisa binária - exemplo 27