Algoritmos Escher.

Slides:



Advertisements
Apresentações semelhantes
UFSC-CTC-INE INE Estruturas de Dados
Advertisements

Ordenação de Dados em Memória
Matrizes Unidimensionais
Estruturas de Dados Marcio Gonçalves.
N Rainhas Descrição do Problema Satisfação de Restrições (CSP)
ESTRUTURA DE DADOS LES.
Linguagem de Programação IX Métodos de Ordenação
05/08/2011 Professor Leomir J. Borba- –
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
Algoritmos de Ordenação
Algoritmos de Busca CONTEÚDO (1) Motivação (2) Busca Linear
Recursividade Prof. Rosana Palazon.
Listas duplamente encadeadas
Algoritmos de Ordenação
Classificação de Dados
Introdução a Programação
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
Pesquisa em Memória Primária
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária – Árvores de Busca
Pesquisa em Memória Primária – Árvores de Busca
David Menotti Estruturas de Dados I DECOM – UFOP
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,
Classificação (Ordenação) de dados
Algoritmos Escher.
Classificação de dados por Troca: QuickSort
Método de Ordenação: InsertionSort
Métodos de Classificação por Seleção
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Marco Antonio Montebello Júnior
Algoritmos de Ordenação
Algoritmos de Ordenação
Insertion Sort.
Vetores e Matrizes Laboratório de ICCN Marco Antonio Montebello Júnior
Algoritmos de ordenação
Algoritmos e Estruturas de Dados II
Comparação entre os métodos de ordenação
Algoritmo de Ordenação
Ordenação em memória primária
Desempenho, Método de Shell, Quicksort
Complexidade de algoritmos e Classificação (Ordenação) de dados
Ceça Moraes – Introdução à Programação SI1
Procedimentos e Funções
Algoritmos de Ordenação
Módulo I Capítulo 5: Vetores
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Introdução à complexidade de algoritmos Luiz Gonzaga da Silveira Junior.
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.
DCC 001 Programação de Computadores 2º Semestre de 2011
Métodos de Ordenação.
CLASSIFICAÇÃO DE DADOS
Prof. Alessandro Gonçalves
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
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
USP – ICMC – SSC SSC0300 2º Semestre 2015
Funcionamento Bucket sort funciona do seguinte modo: Inicialize um vetor de "baldes", inicialmente vazios. Vá para o vetor original, incluindo cada.
Classificação (Ordenação) de dados. Roteiro Contextualização e definições sobre Classificação Métodos de Classificação de Dados.
Campus Pau dos Ferros Disciplina de Algoritmos Prof. Demétrios Coutinho INFORMÁTICA BÁSICA Algoritmos de Ordenação.
Algoritmos com matrizes e vetores
Métodos de Pesquisa e Ordenação
Métodos de Pesquisa e Ordenação
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS
Transcrição da apresentação:

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;

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: “Varrer” o vetor, comparando os elementos vizinhos entre si: se (V[I] > V[I+1]). Caso estejam fora de ordem, os mesmos trocam de posição entre si.

Conceitos Iniciais Métodos de Ordenação - Bolha: A filosofia básica - continuação: 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. 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.

Método da BOLHA (ordem crescente)

Método da BOLHA (ordem crescente) 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] , " ";

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

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.

Método da SELEÇÃO

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

Método da SELEÇÃO Ordenação para (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

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

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ÊNCIA O TEMPO GASTO pesquisando dados em tabelas depende do TAMANHO da tabela e do ALGORITMO utilizado na busca.

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

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.

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

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

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

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:"; imprima TAB[i] , " ";

Solução: Parar a busca quando o DADO for encontrado. 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: O processo de busca continua mesmo depois que o elemento foi encontrado. Solução: Parar a busca quando o DADO for encontrado.

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; imprima DADO, " NAO se encontra na TABELA."; fimprog EFICIENTE: O processo de busca pára quando o elemento é encontrado. Condição melhorada, prevê sucesso na busca e fim da tabela. Programa

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.

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

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  12 750/2  375,5 12/2  6 376/2  188 6/2  3 188/2  94 3/2  1,5 94/2  47 2/2  1 47/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.)

inicio meio fim 5 11 Elem = 22 4 7 8 10 14 21 22 36 62 77 81 91 22 >21, inicio = meio +1 inicio meio fim 6 8 11 4 7 8 10 14 21 22 36 62 77 81 91 22 < 62, fim= meio -1 inicio meio fim 6 7 4 7 8 10 14 21 22 36 62 77 81 91 22 = 22, o elem está na posição meio

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:"; imprima TAB[i], " ";

Pesquisa Binária Programa Inicialização do intervalo de busca 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. "; 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

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

26/03/2017 Obrigado

E Agora??? Exercícios!!!

Exercícios Propostos 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. Verifique se os elementos de um vetor A estão em ordem crescente.

26/03/2017 FIM