A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Métodos de Pesquisa e Ordenação

Apresentações semelhantes


Apresentação em tema: "Métodos de Pesquisa e Ordenação"— Transcrição da apresentação:

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

2 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

3 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

4 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

5 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

6 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

7 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

8 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

9 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

10 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

11 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

12 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

13 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

14 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

15 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

16 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

17 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

18 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

19 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

20 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


Carregar ppt "Métodos de Pesquisa e Ordenação"

Apresentações semelhantes


Anúncios Google