algoritmos escher. agenda método de ordenação; método de pesquisa; exercícios

33
Algoritmos Escher

Upload: internet

Post on 17-Apr-2015

128 views

Category:

Documents


0 download

TRANSCRIPT

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

Algoritmos

Escher

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

Agenda

• Método de Ordenação;

• Método de Pesquisa;

• Exercícios.

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

Conceitos Iniciais

Métodos de Ordenação – Bolha:

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.

Simples, fácil de entender e implementar; Um dos mais conhecidos métodos de ordenação; Baixa eficiência; Utilizado basicamente para desenvolvimento do

raciocínio ou onde não exige-se muita performance;

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

Conceitos Iniciais

Métodos de Ordenação – Bolha:

Critério de ordenação: ordem crescente ou decrescente. A 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.

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

Conceitos Iniciais

Métodos de Ordenação - Bolha:

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.

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

Método da BOLHA (ordem crescente)

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

Método da BOLHA (ordem crescente)

prog metodobolhaint 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 ordenadon <- 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] , " ";}

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

Método da BOLHA (ordem crescente)

para (L<- n-1; L>=1; L--) { para (c<- 0; c<L; c++) {

se (V[c]>V[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

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

Conceitos Iniciais

Métodos de Ordenação – Seleção (Livro):

Critério de ordenação: ordem crescente ou decrescente. 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. A cada passo encontra-se o menor elemento dentro do segmento

com os elementos não selecionados; Troca-se este elemento com o primeiro elemento do segmento; Atualiza-se o tamanho do segmento (menos um elemento); Este processo é repetido até que o segmento fique com apenas

um elemento.

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

Método da SELEÇÃO

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

Método da SELEÇÃOprog 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 ordenadon <- 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] , " ";}

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

Método da SELEÇÃOpara (L<-0; L<n-1; L++) { para (c<-(L+1); c<=n-1; c++) { se(V[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

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

Conceitos Iniciais

Métodos de Pesquisa:

PESQUISA: O problema de procurar (pesquisar) alguma informação numa tabela ou num catálogo é muito comum.

Exemplo:• 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

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

Conceitos Iniciais

Métodos de Pesquisa:

A tarefa de “pesquisa”, “procura” ou “busca” é, como se pode imaginar, uma função muito utilizada.

As rotinas que executam a busca devem ser eficientes (menor tempo possível).

EFICIÊNCIAEFICIÊNCIA O TEMPO GASTO pesquisando dados em tabelas

depende do TAMANHO da tabela e do ALGORITMO utilizado na busca.

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

Conceitos Iniciais

Métodos de Pesquisa:

Método da Pesquisa Sequêncial Método da Pesquisa Binária

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

Conceitos Iniciais

Métodos de Pesquisa - SEQUÊNCIAL:

A pesquisa seqüencial ou linear é o método mais objetivo para se encontrar um elemento particular em um conjunto não classificado.

A 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.

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

Conceitos Iniciais

Métodos de Pesquisa - SEQUÊNCIAL:

A pesquisa termina quando o elemento é encontrado ou quando é atingido o fim do vetor.

No melhor caso, acha-se o elemento procurado na 1a comparação, no pior na Na comparação. Na média, o número de comparações é N/2

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

Conceitos Iniciais

Métodos de Pesquisa - SEQUÊNCIAL:

Comparar o elemento procurado (DADO) com cada um dos elementos da tabela TAB na seqüência em que aparecem na tabela.

Tabela (TAB) 3 6 1 2 0

2 2 2 2

Procurado (DADO) 2

POS 3

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

Conceitos Iniciais

Métodos de Pesquisa - SEQUÊNCIAL:

Para 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 TABACHOU - indica o sucesso ou falha na pesquisa.POS - aponta para a posição do elemento encontrado.

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

Pesquisa Seqüêncialprog 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] , " ";}

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

Pesquisa SeqüêncialPesquisa 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

INEFICIENTEINEFICIENTE: O processo de busca continua mesmo depois que o elemento foi encontrado.

Solução: Parar a busca quando o

DADO for encontrado.

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

Pesquisa Seqüêncial – solução 02Pesquisa 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

EFICIENTEEFICIENTE: O processo de busca pára quando o elemento é encontrado.

Condição melhorada, prevê sucesso na busca

e fim da tabela.

Programa

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

Conceitos Iniciais

Métodos de Pesquisa - Binária:

A idéia básica da Pesquisa Binária consiste em diminuir cada vez mais o intervalo de busca.

Neste método, a tabela a ser pesquisada deve estar previamente ordenada (classificada).

Encontra-se, inicialmente, o elemento central da tabela dividindo-a, assim, em duas metades.

Verifica-se em que metade o elemento procurado se encontra e abandona-se a outra metade.

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

Conceitos Iniciais

Métodos de Pesquisa - Binária:

Conforme 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.

O 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).

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

Conceitos Iniciais

Métodos de Pesquisa - Binária:

A cada passo divide-se a área de pesquisa à metade; Caso a tabela tenha 1500 valores:

1500/2 750 24/2 12750/2 375,5 12/2 6376/2 188 6/2 3188/2 94 3/2 1,594/2 47 2/2 147/2 23,5

O número máximo de passos é log2 N, arredondado ao inteiro mais próximo. Se N = 12. Temos 12 = 24 => log2 24 = 4 (máx.)

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

4 7 8 10 14 21 22 36 62 77 81 91

inicio meio fim

0 5 11Elem = 22

22 >21, inicio = meio +1

4 7 8 10 14 21 22 36 62 77 81 91

inicio meio fim

6 8 11

4 7 8 10 14 21 22 36 62 77 81 91

inicio meio fim

6 6 7

22 < 62, fim= meio -1

22 = 22, o elem está na posição meio

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

Pesquisa BináriaPesquisa 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], " ";

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

Pesquisa BináriaPesquisa 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

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

Referências

Lopes, A. & Garcia, G. – Introdução a Programação.

Schildt – C Completo e Total.

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

ObrigaObrigadodo

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

E Agora???

Exercícios!!!

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

Exercícios Propostos1. 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.

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

FIFIMM