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

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

Algoritmos Escher. Agenda Método de Ordenação; Método de Pesquisa; Exercícios.

Apresentações semelhantes


Apresentação em tema: "Algoritmos Escher. Agenda Método de Ordenação; Método de Pesquisa; Exercícios."— Transcrição da apresentação:

1 Algoritmos Escher

2 Agenda Método de Ordenação; Método de Pesquisa; Exercícios.

3 Conceitos Iniciais Métodos de Ordenação – Bolha: n O algoritmo de ordenação bolha, ou bubble sort, recebeu este nome pela forma usada para descrevê-lo: os elementos maiores são mais leves, e sobem como bolhas até suas posições corretas. n Simples, fácil de entender e implementar; n Um dos mais conhecidos métodos de ordenação; n Baixa eficiência; n Utilizado basicamente para desenvolvimento do raciocínio ou onde não exige-se muita performance;

4 Conceitos Iniciais Métodos de Ordenação – Bolha: n Critério de ordenação: ordem crescente ou decrescente. nA filosofia básica deste método consiste em: 1.Varrer o vetor, comparando os elementos vizinhos entre si: se (V[I] > V[I+1]). 2.Caso estejam fora de ordem, os mesmos trocam de posição entre si.

5 Conceitos Iniciais Métodos de Ordenação - Bolha: n A filosofia básica - continuação: 3.Procede-se assim até o final do vetor. Na primeira varredura verifica-se que o último elemento do vetor já está no seu devido lugar (no caso de ordenação crescente, ele é o maior de todos).A segunda varredura é análoga à primeira e vai até o penúltimo elemento. 4.Este processo é repetido até que seja feito um número de varreduras igual ao número de elementos a serem ordenados menos um. Ao final do processo o vetor está classificado segundo o critério escolhido.

6 Método da BOLHA (ordem crescente)

7 prog metodobolha int L, c, AUX, V[5], n; # onde L, c: são variáveis de controle # AUX: variável auxiliar para troca # V[5] : tabela ou vetor a ser ordenado n <- 5; # tamanho do vetor imprima " \nInforme os dados da tabela: \n"; para (L <- 0; L < n; L++){ imprima Digite valor: "; leia V[L]; } imprima "\nValores Informados: "; para (L <- 0; L < n; L++) { imprima V[L], " "; }

8 Método da BOLHA (ordem crescente) para (L =1; L--) { para (c<- 0; cV[c+1]) { /* troca */ AUX <- V[c]; V[c] <- V[c+1]; V[c+1] <- AUX; } imprima "\nValores Ordenados:"; para (L <- 0; L < n; L++) {imprima V[L], " ";} fimprog Ordenação

9 Conceitos Iniciais Métodos de Ordenação – Seleção (Livro): n Critério de ordenação: ordem crescente ou decrescente. n A idéia básica do Método de Seleção é, a cada passagem pelo vetor, selecionar o menor elemento e colocar este elemento o mais a esquerda possível. nA cada passo encontra-se o menor elemento dentro do segmento com os elementos não selecionados; nTroca-se este elemento com o primeiro elemento do segmento; nAtualiza-se o tamanho do segmento (menos um elemento); nEste processo é repetido até que o segmento fique com apenas um elemento.

10 Método da SELEÇÃO

11 prog metodoselecao int L, c, AUX, V[5], n; # onde L, c: são variáveis de controle # AUX: variável auxiliar para troca # V[5] : tabela ou vetor a ser ordenado n <- 5; # tamanho do vetor imprima " \nInforme os dados da tabela: \n"; para (L <- 0; L < n; L++){ imprima Digite valor: "; leia V[L]; } imprima "\nValores Informados: "; para (L <- 0; L < n; L++) { imprima V[L], " "; }

12 Método da SELEÇÃO para (L<-0; L V[c]) { AUX <- V[L]; V[L] <- V[c]; V[c] <- AUX; } imprima "\nValores Ordenados:"; para (L <- 0; L < 5; L++) {imprima V[L], " ";} fimprog Ordenação

13 Conceitos Iniciais Métodos de Pesquisa: nPESQUISA: O problema de procurar (pesquisar) alguma informação numa tabela ou num catálogo é muito comum. nExemplo: procurar o telefone de uma pessoa no catálogo procurar o nº da conta de um certo cliente consultar um determinado saldo em um terminal automático

14 Conceitos Iniciais Métodos de Pesquisa: nA tarefa de pesquisa, procura ou busca é, como se pode imaginar, uma função muito utilizada. nAs rotinas que executam a busca devem ser eficientes (menor tempo possível). EFICIÊNCIA n EFICIÊNCIA nO TEMPO GASTO pesquisando dados em tabelas depende do TAMANHO da tabela e do ALGORITMO utilizado na busca.

15 Conceitos Iniciais Métodos de Pesquisa: nMétodo da Pesquisa Sequêncial nMétodo da Pesquisa Binária

16 Conceitos Iniciais Métodos de Pesquisa - SEQUÊNCIAL: nA pesquisa seqüencial ou linear é o método mais objetivo para se encontrar um elemento particular em um conjunto não classificado. nA idéia básica da Pesquisa Sequêncial é localizar o elemento procurado através de comparações sucessivas e sequênciais, a partir do primeiro elemento do vetor.

17 Conceitos Iniciais Métodos de Pesquisa - SEQUÊNCIAL: nA pesquisa termina quando o elemento é encontrado ou quando é atingido o fim do vetor. n No melhor caso, acha-se o elemento procurado na 1 a comparação, no pior na N a comparação. Na média, o número de comparações é N/2

18 Conceitos Iniciais Métodos de Pesquisa - SEQUÊNCIAL: nComparar o elemento procurado (DADO) com cada um dos elementos da tabela TAB na seqüência em que aparecem na tabela. Tabela (TAB) Procurado (DADO) 2 POS 3

19 Conceitos Iniciais Métodos de Pesquisa - SEQUÊNCIAL: nPara os métodos de pesquisa que se seguem vamos denotar por: TAB - um vetor contendo N elementos inteiros distintos. DADO - elemento a ser procurado em TAB ACHOU - indica o sucesso ou falha na pesquisa. POS - aponta para a posição do elemento encontrado.

20 Pesquisa Seqüêncial prog BUSCASEQUENCIAL int i /*variável de controle*/, N /*tamanho da tabela*/, DADO /*elemento a ser procurado na tabela*/, POS /*posição em que se encontra o elemento*/, TAB [5] /*tabela para os valores*/, ACHOU; /*valor lógico que representa o sucesso da busca*/ imprima "\nInforme os dados da tabela: "; para (i <- 0; i < 5; i++) { leia TAB[i]; } imprima "\nValores Informados:"; para (i <- 0; i < 5; i++) { imprima TAB[i], " "; }

21 Pesquisa Seqüêncial imprima "\nDigite o elemento a ser procurado: "; leia DADO; ACHOU <- 0; para (i <- 0; i < 5; i++) { se (TAB[i] == DADO) { ACHOU <- 1; POS <- i; } se (ACHOU == 1) { imprima DADO, " se encontra na posicao ", POS; } senao { imprima DADO, " NAO se encontra na TABELA."; } fimprog INEFICIENTE INEFICIENTE: O processo de busca continua mesmo depois que o elemento foi encontrado. Solução: Parar a busca quando o DADO for encontrado.

22 Pesquisa Seqüêncial – solução 02 imprima "\nDigite o elemento a ser procurado: "; leia DADO; //***** ACHOU <- 0; i = 0; enquanto ((ACHOU == 0) && (i <= N)) { se (TAB[i] == DADO) ACHOU <-1; senao i++; } se (ACHOU == 1) imprima DADO, " se encontra na posicao, i; senao imprima DADO, " NAO se encontra na TABELA."; fimprog EFICIENTE EFICIENTE: O processo de busca pára quando o elemento é encontrado. Condição melhorada, prevê sucesso na busca e fim da tabela. Programa

23 Conceitos Iniciais Métodos de Pesquisa - Binária: nA idéia básica da Pesquisa Binária consiste em diminuir cada vez mais o intervalo de busca. nNeste método, a tabela a ser pesquisada deve estar previamente ordenada (classificada). nEncontra-se, inicialmente, o elemento central da tabela dividindo-a, assim, em duas metades. nVerifica-se em que metade o elemento procurado se encontra e abandona-se a outra metade.

24 Conceitos Iniciais Métodos de Pesquisa - Binária: nConforme o resultado da operação efetuada, toma-se como novo intervalo de pesquisa uma das metades do intervalo anterior e o processo de busca é repetido. nO término do processo se dá quando o elemento desejado é localizado ou quando o intervalo de busca torna-se vazio (significando que o elemento desejado não está presente na tabela).

25 Conceitos Iniciais Métodos de Pesquisa - Binária: nA cada passo divide-se a área de pesquisa à metade; nCaso a tabela tenha 1500 valores: 1500/ / /2 375,512/ /2 1886/ /2 943/2 1,5 94/2 472/2 1 47/2 23,5 O número máximo de passos é log 2 N, arredondado ao inteiro mais próximo. Se N = 12. Temos 12 = 2 4 => log = 4 (máx.)

26 iniciomeiofim 0511 Elem = >21, inicio = meio iniciomeiofim iniciomeiofim < 62, fim= meio = 22, o elem está na posição meio

27 Pesquisa Binária prog metodobinario //Declarações int i /*variável de controle*/, N /*tamanho da tabela*/, DADO /*elemento a ser procurado na tabela*/, MEIO /*posição central tabela*/, INIC /*posição inicial da busca*/, FIM /*posição final da busca */, TAB [30] /*tabela para os elementos */, ACHOU; /*valor lógico que representa o sucesso da busca*/ imprima "Digite o tamanho da tabela: "; leia N; imprima "\nInforme os dados da tabela: "; para (i <- 0; i < N; i++) leia TAB[i]; imprima "\nValores Informados:"; para (i <- 0; i < N; i++) imprima TAB[i], " ";

28 Pesquisa Binária imprima"\nDigite o elemento a ser procurado: "; leia DADO; //***** ACHOU <- 0; INIC <- 0; FIM <- (N - 1); enquanto ((INIC <= FIM) && (ACHOU == 0)) { MEIO <- (INIC + FIM) / 2;//divisao de inteiro, resulta inteiro se (TAB[MEIO] == DADO) ACHOU <- 1;// o elemento foi encontrado senao { se (TAB[MEIO] > DADO) FIM <- (MEIO - 1);// ajusta fim do vetor senao INIC <- (MEIO + 1);// ajusta inicio do vetor } se (ACHOU == 1) imprima DADO, " foi encontrado. "; senao imprima DADO, " NAO se encontra na TABELA."; fimprog Inicialização do intervalo de busca Determinação da posição central Mudança do intervalo de busca Programa

29 Referências nLopes, A. & Garcia, G. – Introdução a Programação. nSchildt – C Completo e Total.

30 Obrigado

31 E Agora??? Exercícios!!!

32 Exercícios Propostos 1.Faça um programa para ler dois vetores e intercalar estes dois vetores formando o vetor. Apresentar o vetor C gerado, ordenar este vetor C e mostrá-lo também. 2.Verifique se os elementos de um vetor A estão em ordem crescente.

33 FIM


Carregar ppt "Algoritmos Escher. Agenda Método de Ordenação; Método de Pesquisa; Exercícios."

Apresentações semelhantes


Anúncios Google