SlideShare a Scribd company logo
1 of 29
Download to read 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

More Related Content

What's hot

Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compactoLuciano Ramalho
 
15 algoritmos de busca em tabelas - sequencial e binaria
15   algoritmos de busca em tabelas - sequencial e binaria15   algoritmos de busca em tabelas - sequencial e binaria
15 algoritmos de busca em tabelas - sequencial e binariaRicardo Bolanho
 
Introdução à Aprendizagem de Máquina
Introdução à Aprendizagem de MáquinaIntrodução à Aprendizagem de Máquina
Introdução à Aprendizagem de MáquinaFernando Palma
 
Aula 03.1 - Operadores Relacionais e Lógicos
Aula 03.1 - Operadores Relacionais e LógicosAula 03.1 - Operadores Relacionais e Lógicos
Aula 03.1 - Operadores Relacionais e LógicosMessias Batista
 
Introduction to Data Structures Sorting and searching
Introduction to Data Structures Sorting and searchingIntroduction to Data Structures Sorting and searching
Introduction to Data Structures Sorting and searchingMvenkatarao
 
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaEstrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaLeinylson Fontinele
 
Encapsulamento com Descritores em Python
Encapsulamento com Descritores em PythonEncapsulamento com Descritores em Python
Encapsulamento com Descritores em PythonLuciano Ramalho
 
Estrutura de Dados - Aula 12 - Listas Duplamente Encadeadas
Estrutura de Dados  - Aula 12 - Listas Duplamente EncadeadasEstrutura de Dados  - Aula 12 - Listas Duplamente Encadeadas
Estrutura de Dados - Aula 12 - Listas Duplamente EncadeadasLeinylson Fontinele
 
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
 
Aplicativos Informatizados - Profª Alessandra
Aplicativos Informatizados - Profª AlessandraAplicativos Informatizados - Profª Alessandra
Aplicativos Informatizados - Profª AlessandraAlessandra França
 
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
 
Ordenação de vetores
Ordenação de vetoresOrdenação de vetores
Ordenação de vetoresalfredtaddeus
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenaçãoJonas Mendonça
 
Exercicios de estruturas condicionais - Lógica de Programação
Exercicios de estruturas condicionais - Lógica de ProgramaçãoExercicios de estruturas condicionais - Lógica de Programação
Exercicios de estruturas condicionais - Lógica de ProgramaçãoBruno Quaresma
 
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Alex Camargo
 
Lista duplamente encadeada em python
Lista duplamente encadeada em pythonLista duplamente encadeada em python
Lista duplamente encadeada em pythonCiro Rafael
 
50978145 algoritmos-exercicios-resolvidos
50978145 algoritmos-exercicios-resolvidos50978145 algoritmos-exercicios-resolvidos
50978145 algoritmos-exercicios-resolvidosEdvan Mateó
 
Matemática Discreta - Introdução à Disciplina
Matemática Discreta - Introdução à DisciplinaMatemática Discreta - Introdução à Disciplina
Matemática Discreta - Introdução à DisciplinaRanilson Paiva
 
POO - Unidade 2 (parte 3) - Diagrama de Sequência (versão 1)
POO - Unidade 2 (parte 3) - Diagrama de Sequência  (versão 1)POO - Unidade 2 (parte 3) - Diagrama de Sequência  (versão 1)
POO - Unidade 2 (parte 3) - Diagrama de Sequência (versão 1)Marcello Thiry
 
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Leinylson Fontinele
 

What's hot (20)

Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compacto
 
15 algoritmos de busca em tabelas - sequencial e binaria
15   algoritmos de busca em tabelas - sequencial e binaria15   algoritmos de busca em tabelas - sequencial e binaria
15 algoritmos de busca em tabelas - sequencial e binaria
 
Introdução à Aprendizagem de Máquina
Introdução à Aprendizagem de MáquinaIntrodução à Aprendizagem de Máquina
Introdução à Aprendizagem de Máquina
 
Aula 03.1 - Operadores Relacionais e Lógicos
Aula 03.1 - Operadores Relacionais e LógicosAula 03.1 - Operadores Relacionais e Lógicos
Aula 03.1 - Operadores Relacionais e Lógicos
 
Introduction to Data Structures Sorting and searching
Introduction to Data Structures Sorting and searchingIntroduction to Data Structures Sorting and searching
Introduction to Data Structures Sorting and searching
 
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaEstrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
 
Encapsulamento com Descritores em Python
Encapsulamento com Descritores em PythonEncapsulamento com Descritores em Python
Encapsulamento com Descritores em Python
 
Estrutura de Dados - Aula 12 - Listas Duplamente Encadeadas
Estrutura de Dados  - Aula 12 - Listas Duplamente EncadeadasEstrutura de Dados  - Aula 12 - Listas Duplamente Encadeadas
Estrutura de Dados - Aula 12 - Listas Duplamente Encadeadas
 
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)
 
Aplicativos Informatizados - Profª Alessandra
Aplicativos Informatizados - Profª AlessandraAplicativos Informatizados - Profª Alessandra
Aplicativos Informatizados - Profª Alessandra
 
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)
 
Ordenação de vetores
Ordenação de vetoresOrdenação de vetores
Ordenação de vetores
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenação
 
Exercicios de estruturas condicionais - Lógica de Programação
Exercicios de estruturas condicionais - Lógica de ProgramaçãoExercicios de estruturas condicionais - Lógica de Programação
Exercicios de estruturas condicionais - Lógica de Programação
 
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
 
Lista duplamente encadeada em python
Lista duplamente encadeada em pythonLista duplamente encadeada em python
Lista duplamente encadeada em python
 
50978145 algoritmos-exercicios-resolvidos
50978145 algoritmos-exercicios-resolvidos50978145 algoritmos-exercicios-resolvidos
50978145 algoritmos-exercicios-resolvidos
 
Matemática Discreta - Introdução à Disciplina
Matemática Discreta - Introdução à DisciplinaMatemática Discreta - Introdução à Disciplina
Matemática Discreta - Introdução à Disciplina
 
POO - Unidade 2 (parte 3) - Diagrama de Sequência (versão 1)
POO - Unidade 2 (parte 3) - Diagrama de Sequência  (versão 1)POO - Unidade 2 (parte 3) - Diagrama de Sequência  (versão 1)
POO - Unidade 2 (parte 3) - Diagrama de Sequência (versão 1)
 
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
 

Viewers also liked

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
 

Viewers also liked (16)

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
 
Ordenação
OrdenaçãoOrdenação
Ordenação
 
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
 

Similar to 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
 
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
 
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
 

Similar to 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
 
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
 
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
 

More from 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
 

More from 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