Métodos de Pesquisa e Ordenação

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

Estruturas de Dados Marcio Gonçalves.
Katia S. Guimarães QUICKSORT Katia S. Guimarães
ESTRUTURA DE DADOS LES.
Linguagem de Programação IX Métodos de Ordenação
Aula 10 Algoritmos de Busca
Algoritmos de Ordenação
Pesquisa em Memória Primária
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Pesquisa em Memória Primária
David Menotti Estruturas de Dados I DECOM – UFOP
FACENS – Engenharia da Computação Lógica Computacional II
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Algoritmos Escher.
Algoritmos de Ordenação
Algoritmos de Ordenação
Insertion Sort.
Algoritmos de ordenação
Algoritmos de Busca Parte II
Algoritmos e Estruturas de Dados II
Ordenação em memória primária
Desempenho, Método de Shell, Quicksort
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Métodos de Ordenação e Busca
Algoritmos de Ordenação
QuickSort Dividir: A[p…r] é particionado (reorganizado) em dois subvetores não vazios A[p…q] e A[q+1…r] tal que cada elemento de A[p…q] é menor ou igual.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Aula 10 Algoritmos de Busca
Capítulo VI – Variáveis Indexadas 6.1 – A necessidade de variáveis indexadas 6.2 – Vetores e matrizes 6.3 – Aplicações com vetores numéricos 6.4 – Aplicações.
Como analisar um algoritmo
DCC 001 Programação de Computadores 2º Semestre de 2011
Métodos de Ordenação.
CLASSIFICAÇÃO DE DADOS
ATAL – Prof. Jorge Figueiredo Ordenação AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação.
Classificação Ordenação de Dados
Programação II Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da Prof.
Classificação (Ordenação) de dados
USP – ICMC – SSC SSC0300 2º Semestre 2015
Algoritmos com matrizes e vetores
Métodos de Pesquisa e Ordenação Estruturas de Dados Melissa Marchiani Palone Zanatta.
Estrutura de Dados (DPADF 0056) Aula 8 – Estr. Clássicas - Lista Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior.
Aula 3 - Estruturas de Repetição
Algoritmos e Estruturas de Dados I
Grupos de Slides No 7. Prof. SIMÃO
Vetores e Matrizes em C/C++
Ordenação dos Elementos de um Vetor - Bubble Sort e Quick Sort .
INE5408 Estruturas de Dados
Introdução à Computação para Engenharia MAC2166
Ordenação: Terminologia
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas
INF1007: Programação 2 6 – Ordenação de Vetores
FUNDAMENTO DE PROGRAMAÇÃO
Capítulo VIII – Técnicas de Ordenação
Estrutura de dados Pilhas e filas
FUNDAMENTO DE PROGRAMAÇÃO
FEUP/LEEC Algoritmos e Estruturas de Dados 2001/2002
Métodos de Pesquisa e Ordenação
Árvores.
Capítulo IV – Árvores Gerais
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS
Listas Encadeadas.
Pesquisa e Ordenação de Vetor
Algoritmos de ordenação
CALCULADORA CARACTERE E VARIÁVEIS COMPOSTAS OU VETORES EM JAVA
Algoritmos de ordenação Estruturas avançadas de dados I
Aula 7 Professores: Conteúdo: Dante Corbucci Filho
Transcrição da apresentação:

Métodos de Pesquisa e Ordenação Estruturas de Dados Melissa Marchiani Palone Zanatta 1

Algoritmos de pesquisa Pesquisar dados envolve: determinar se um valor está presente nos dados; Se estiver: encontrar a localização do valor. OBS: geralmente o valor é denominado de chave de pesquisa Algoritmos de pesquisa 2

Busca exaustiva O algoritmo testa cada elemento Quando alcança o fim do array - informa ao usuário que a chave não está presente OBS: O array está desordenado Busca exaustiva 3

Algoritmo buscaExaustiva int buscaExaustiva (int elem) { int i=0; while (vetor[i]<>elem&&i<tl) i=i+1; if (i < tl && vetor[i] == elem) return i; // achou na posição i else return -1; // não achou } Algoritmo buscaExaustiva 4

Busca sequencial O array está ordenado A busca deve testar até o primeiro elemento maior que a chave procurada Se encontrar um elemento maior que a chave procurada, é por que o elemento igual a chave não está lá Busca sequencial 5

Algoritmo buscaSequencial int buscaSequencial(int elem) { int i=0; while (elem > vetor[i]&&i<tl) i=i+1; if (i<tl && elem == vetor[i]) return i; // achou na posição i else return -1; // não achou } Algoritmo buscaSequencial 6

Busca binária A primeira iteração testa o elemento do meio do array Se o elemento do meio = chave pesquisa, o algoritmo termina Se a chave pesquisa < elemento do meio: - a chave de pesquisa não poderá localizar nenhum elemento na segunda metade do array e o algoritmo continua apenas na primeira metade Busca binária 7

Busca binária Se a chave pesquisa > o elemento do meio - o algoritmo continua apenas com a segunda metade do array Repare que a cada iteração, metade do array é descartado, ficando apenas a metade que interessa E assim sucessivamente até localizar o elemento ou reduzindo o subarray ao tamanho zero. Busca binária 8

Algoritmo buscaBinaria int buscaBinaria(int elem) {int inicio, meio, fim; inicio=0; fim=tl-1; meio=(inicio+fim)/2; while(elem!=vetor[meio]&&inicio<fim) { if(elem>vetor[meio]) inicio=meio+1; else fim=meio; } if (elem>vetor[meio]) return(meio+1); else return(meio); Algoritmo buscaBinaria 9

Algoritmos de classificação Colocar os dados em ordem crescente ou decrescente, é uma das aplicações mais importantes da computação A escolha do algoritmo só afeta o tempo de execução e o uso de memória do programa Algoritmos de classificação 10

A técnica chamada de ordenação por submersão (sinking sort) funciona da seguinte forma: os valores maiores submergem para o final do array outra técnica é fazer os valores menores subirem gradualmente, até o topo do array (isto é, em direção ao topo do array) Algoritmo da bolha 11

A ordenação pela submersão faz várias passagens pelo array Cada passagem compara sucessivos pares de elementos Se um par está em ordem crescente, os valores permanecem na mesma ordem Se um par está em ordem decrescente, é realizada a troca entre os elementos do par Algoritmo da bolha 12

Bubble Sort Algoritmo Bolha; inicio houveTroca = verdade; enquanto houveTroca faça houveTroca = falso para i de 1 até n-1 faça se V[i] > V[i + 1] então inicio troque V[i] e V[i + 1] de lugar houveTroca = verdade fim fim. Bubble Sort 13

A primeira iteração do algoritmo seleciona o menor elemento e o permuta pelo primeiro elemento A segunda iteração seleciona o segundo menor item (que é o menor item dos elementos restantes) e o permuta pelo segundo elemento E assim sucessivamente até o penúltimo elemento Algoritmo da seleção 14

A primeira iteração seleciona o segundo elemento do array Se for menor que o primeiro elemento, o permuta pelo primeiro elemento (ou seja, ordena apenas os dois primeiros elementos do array) A segunda iteração, examina o terceiro elemento e o insere na posição correta com relação aos dois primeiros elementos de modo que todos os três elementos estejam em ordem Algoritmo da inserção 15

Algoritmo da inserção E assim sucessivamente para os demais elementos A inserção pode ser direta e binária A diferença entre elas é que ao procurar o local ideal para inserir o novo elemento entre os elementos já ordenados, pode-se optar por uma busca sequencial ou pela busca binária Algoritmo da inserção 16

QuickSort Se baseia no paradigma de divisão e conquista escolha um pivô (por ex o elemento do meio do array) “arrume” o array de tal forma que: ANTES do pivô devem ficar os elementos menores que o pivô; APÓS o pivô, deverão ficar apenas os elementos maiores que o pivô; QuickSort 17

esta “arrumação” implica, algumas vezes, na mudança de posição do pivô dentro do array (nem sempre). Ao final desta etapa, o pivô estará na sua posição ideal dentro do array. aplique a mesma lógica aos dois subarrays (da esquerda e da direita), o que implica um processo recursivo. QuickSort 18

Algoritmos de classificação Os algoritmos da bolha, da seleção e da inserção (direta e binária) são simples de programar, porém são ineficientes O método mais eficiente de classificação é realizado através de permuta entre os elementos (quicksort). Algoritmos de classificação 19

Dado um vetor de 100 elementos do tipo inteiro (primeiramente desordenado), implemente: os métodos de ordenação os métodos de classificação Exercícios 20