Pesquisa e Ordenação
|
|
|
- Joana de Figueiredo Wagner
- 7 Há anos
- Visualizações:
Transcrição
1 Pesquisa e Ordenação SC121 - Introdução à Programação ICMC - USP - São Carlos Maio de 2009
2 Algoritmo de Procura Algoritmo de Procura 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 o seu saldo em um terminal automático
3 Algoritmo de Procura A tarefa de pesquisa, procura ou busca é, como se pode imaginar, uma das funções mais utilizadas rotinas que a executem de uma forma eficiente Eficiente: uma rotina que faça a busca no menor tempo possível O TEMPO GASTO pesquisando dados em tabelas depende do TAMANHO da tabela.
4 Algoritmo de Procura O tempo gasto para se descobrir um telefone na lista de São Paulo > O tempo gasto para se descobrir um telefone na lista de uma cidade do interior com 3000 habitantes
5 Algoritmo de Procura TEMPO GASTO pode variar muito dependendo do algoritmo utilizado Para os algoritmos de busca que se seguem vamos denotar por: Tab - um vetor de n posições Dado - elementos que devemos procurar em Tab Achou - indica o sucesso ou falha na pesquisa Ind - aponta para a posição do elemento encontrado
6 Parte que se repetirá... ( ) Tab[100] of integer; {tabela de pesquisa} Int Ind;{retorna a posição do elemento} boolean Achou; {sucesso ou falha na busca} Int Dado; {valor a ser procurado} Int I; {auxiliar}
7 Algoritmo 1 - Busca em Tabela #includes ( ) Int main(){ printf( Entre com os valores da tabela ); for (i=0;i<n;i++) scanf( %d, &Tab[I]); printf( Entre com o valor a ser procurado ); scanf( %d,&dado); Achou=false; for (i=0;i<n;i++) if Tab[I] == Dado{ N comparações Achou=true; Ind = I; ( ~ percorrer 1 dicionário todo) } if Achou printf( %d %d se encontra na posição, Dado, Ind) Dado); getch(); } else printf( %d não encontra na tabela,
8 Algoritmo 2 - Busca em tabela Pára-se o processo de busca quando o dado for encontrado. 1º modo I 1 Enquanto (Tab [I] <> dado) and (I<=n) faça I= Este algoritmo não funciona pois Ind N +1 e Tab [N+1] - referência inválida
9 2 o Modo (Com o uso da variável BOOLEAN) Program Alg2; (*) Int Main(){ Achou:= false; Procura:= true; Ind:= 0; printf( Entre com os valores da tabela ); for (i=0;i<n;i++) scanf( %d, &Tab[I]); Dado pode estar na 1 a posição printf( Entre com o valor a ser procurado ); scanf( %d,&dado); ou Dado pode estar na última while Procura{ Ind++; Na média: N/2 comparações if Ind > N Procura= false; else Procura = Tab[Ind] <> Dado Obs: 2 testes } - Procura = true if Ind <= N -Ind> N Achou = true; if Achou printf( %d se encontra na posição %d,dado, Ind); else printf( %d não encontra na tabela, Dado); }
10 Algoritmo 3: Busca com Sentinela Se soubermos que o dado se encontra na tabela na precisaríamos fazer o teste Ind > N INSERIR o Dado no final da tabela
11 Program Alg3; {Bem + simples} (*) begin printf( Entre com os valores da tabela ); for (i=0;i<n;i++) scanf( %d, &Tab[I]); printf( Entre com o valor a ser procurado ); scanf( %d,&dado); Achou= false; Ind= 0; Tab[N]= Dado; while (Tab[Ind]!= Dado){ Ind++; } Achou= Ind!= N; if Achou printf( %d se encontra na posição %d,dado, Ind); else printf( %d não se encontra na tabela, Dado); end.
12 Algoritmo 4 -Busca binária (+ eficiente) Dicionário - Tarol Abre-se o dicionário ao meio letra J Abandonamos a 1 a metade Tomamos a metade a partir de J letra P Abandonamos a 1 a metade Tomamos a metade a partir de P letra S (pág. 1318) Dividimos novamente, chegamos a palavra Tomo (pág. 1386) palavra está entre 1318 e 1386
13 Algoritmo 4 - Busca binária A cada passo dividimos a área de pesquisa à metade Caso o dicionário tenha 1500 palavras 1500/ / pesquisas = log /2 375,5 12/2 6 N log 2 N 376/ / comparações 188/2 94 3/2 1,5 94/2 47 2/2 1 47/2 23,5
14 Program Alg4; (*) Inicio, Fim, Meio: Integer; begin printf( Entre com os valores da tabela ); for (i=0;i<n;i++) scanf( %d, &Tab[I]); printf( Entre com o valor a ser procurado ); scanf( %d,&dado); Achou= false; Inicio=1; Fim= N; Meio = (1+N)/2; while (Dado <> Tab[Meio]) and (Inicio <> Fim){ if Dado > Tab[Meio] Inicio = Meio + 1; else Fim = Meio; Meio= (Inicio + Fim) / 2; } Achou = Dado = Tab[Meio]; if Achou printf( %d se encontra na posição %d,dado, Meio); else printf( %d não encontra na tabela, Dado); end.
15 Algoritmos de Ordenação
16 Algoritmos de Ordenação Da mesma forma que a BUSCA, a ORDENAÇÃO é uma das tarefas básicas em processamento de dados A ordenação de um vetor significa fazer com que os seus elementos estejam colocados de acordo com algum critério de ordenação
17 Algoritmos de Ordenação (continuação) Supor que os elementos de um vetor sejam inteiros Critério de ordenação: ordem crescente ou decrescente Assim, se o vetor tem N elementos: VET[I] >= VET[J] se I > J crescente VET[I] <= VET[J] se I > J decrescente
18 Método da Seleção VET = [ ] Ordem crescente 1 o passo:- para saber quem fica na posição 1, determina-se o menor elemento do vetor da posição 2 até a 8 - Compara-se com o elemento VET[1] - se for menor troca-se as posições VET = [ ]
19 Método da Seleção (continuação) 2 o passo:- procura-se o menor elemento da posição 3 até a 8 e repetimos o processo VET = [ ] 3 o passo: VET = [ ]
20 Método da Seleção (continuação) 4 o passo: VET = [ ] 5 o passo: VET = [ ] 6 o passo: VET = [ ] 7 o passo: VET = [ ] Ok!
21 Algoritmo1 - Ordenação por Seleção (**) program ordena1; #includes... int Tab[10] {tabela de pesquisa} int Ind1, Ind2; {marcadores} int Aux; {posição para a troca} int IndMin; {posição do menor elemento}
22 Algoritmo1 - Ordenação por Seleção (continuação) Int Main(){ (**) printf( Entre com os valores da tabela ); for (i=0;i<n;i++) scanf( %d, &Tab[I]); for(ind1=0;ind1< N 1;Ind1++){ IndMin= Ind1; for(ind2= IndMin + 1;I<N;I++){ if Tab[Ind2] < Tab[IndMin] IndMin= Ind2; if Tab[IndMin] < Tab[Ind1]{ Aux = Tab[IndMin]; Tab[IndMin]= Tab[Ind1]; Tab[Ind1]= Aux; } } printf( O vetor ordenado e\n ); for (Ind1=0;Ind1<N;Ind1++){ printf( %d,tab[ind1]); }
23 Esforço Computacional 1 o passo: 7 comparações 2 o passo: 6 comparações 3 o passo: 5 comparações 4 o passo: 4 comparações 5 o passo: 3 comparações 6 o passo: 2 comparações 7 o passo: 1 comparação N elementos : soma do N-1 primeiros inteiros N C = (N-1). N / 2 N T = (N-1) {no máximo}
24 Método da Bolha É mais popular que o anterior, embora seu desempenho seja inferior Tab = [ ] 1 [ ] 2 [ ] 3 [ ] 4 [ ]
25 Algoritmo2 - Método da Bolha Int Main(){ (**) boolean Troquei; {indicador de parada} printf( Entre com os valores da tabela ); for (i=0;i<n;i++) scanf( %d, &Tab[I]); Ind2= N; do{ Troquei= false; for (Ind1=0;Ind1<Ind2 1;Ind1++){ if Tab[Ind1] > Tab[Ind1+1]{ Aux= Tab[Ind1]; Tab[Ind1]= Tab[Ind1+1]; Tab[Ind1+1]= Aux; Troquei:= true; }}} while(troquei); writeln( O vetor ordenado e ); printf( O vetor ordenado e\n ); for (Ind1=0;Ind1<N;Ind1++){ printf( %d,tab[ind1]); printf( O vetor ordenado e\n ); for (Ind1=0;Ind1<N;Ind1++){ printf( %d,tab[ind1]); }
26 Esforço Computacional Método da Bolha N C = (N-1) N / 2 N T = 3 (N-1) N / 4 N C = número de comparações N T = número de trocas
27 Método Quicksort Vamos, agora, examinar um processo de ordenação chamado ORDENAÇÃO POR PARTIÇÃO, que é vantajoso em relação aos processos anteriores O esforço computacional cresce com N log N e não mais quadraticamente
28 Idéia Básica (Quicksort) Trocas em distâncias maiores do que 1 Três marcadores: Antes, Depois e Meio Vet[Meio] Vet elemento maior Mediana elemento menor
29 Idéia Básica (Quicksort) Procura-se de um lado um elemento menor que a Mediana e por outro lado um elemento maior que a Mediana e troca-se suas posições Se existir apenas um elemento nas cond. anteriores, entao, troca-se esse elemento com a Mediana. Repete-se o processo até que Antes seja maior que Depois
30 Exemplo VET = [ ] Antes = 1 Depois = 8 Meio = 4 VET = [ ] está na posição correta
31 Exemplo (continuação) Repete-se o processo, isto é, a partição, para cada uma das METADES 1 a metade 2 a metade VET = [ ( ) 59 ( ) ] VET = [ ] Ordenado!
32 Subprogramas Recursivos (1 de 5) O Escopo de um subprograma é delimitado desde de sua definição até o fim do bloco que está definido. Sendo assim, um subprograma pode ser chamado por um outro subprograma ou até mesmo por si próprio. Quando um subprograma contém uma chamada a si próprio, ele é dito um subprograma recursivo.
33 Subprogramas Recursivos (2 de 5) Exemplos de definições recursivas: (i) fat(n) = n * fat(n-1), n >= 1 fat(n) = 1, n = 0 (ii) fib(n) = fib(n-1)+fib(n-2), n >= 2 fib(n) = 1, n = 1 fib(n) = 0, n = 0
34 Subprogramas Recursivos (3 de 5) Todas as definições recursivas têm em comum: um índice para cada definição; pelo menos, uma definição não-recursiva (condição de saída) que, ao ser alcançada garante a interrupção da recursão; Cada chamada faz a função ser executada novamente, com um argumento diferente para cada nova execução.
35 Subprogramas Recursivos (4 de 5) fib(n) = fib(n-1)+fib(n-2), n >= 2 fib(n) = 1, n = 1 fib(n) = 0, n = 0 Int function fib(int n){ } if n = 0 fib := 0; else if n = 1 fib := 1; else fib = fib(n-1)+fib(n-2)
36 Subprogramas Recursivos (5 de 5) Programas recursivos consomem tempo de execução e espaço em memória (pilha de ativação para cada procedimento recursivo) e podem ser ineficientes para alguns casos. Por exemplo, o cálculo do número de Fibonacci iterativo gasta menos recursos computacionais do que o cálculo recursivo. Faça o programa fib(n) iterativo para comprovar a eficiência perante o recursivo.
37 Algoritmo Quicksort O algoritmo para executar esta tarefa é recursivo Program Quicksort; Início do Programa Quicksort variaveis int Tab[20]; {tabela a ser ordenada} int Ind; {marcador}
38 void Quick (int Inicio, int Fim); Int Antes, Depois; Int Mediana, Aux; Continuação do Programa Quicksort 1}; Antes= Inicio; Depois= Fim; Mediana= Tab[(Inicio + Fim) / 2]; do{ while Tab[Antes] < Mediana { Antes= Antes + while Tab[Depois] > Mediana { Depois= Depois 1}; if Antes <= Depois{ Aux := Tab[Antes]; Tab[Antes] := Tab[Depois]; Tab[Depois] := Aux; Antes := Antes + 1; Depois := Depois - 1; } while( Antes > Depois); If Inicio < Depois Quick(Inicio, Depois); if Antes < Fim Quick(Antes, Fim); } /*Quick
39 Int main(){ printf( Entre com os valores da tabela ); for (i=0;i<n;i++) scanf( %d, &Tab[I]); Quick(1,N); printf( O vetor ordenado e\n ); for (Ind1=0;Ind1<N;Ind1++){ printf( %d,tab[ind1]); Final do Programa Quicksort } {program quicksort}
40 Esforço Computacional Método do Quicksort N C = N (log N) N T = N (log N) 1 o passo: N comparações a cada passo: divide o vetor ao meio
41 EXEMPLO VET = [ ] VET = [ ] VET = [ ] VET = [ ( ) 42 ( ) ]
42 VET = [ ( ) ] VET = [ ( ) ] VET = [ ] VET = [ ] VET = [ ] VET = [ ]
43 Recursão X Iteração Todo processo recursivo pode ser transformado em um processo iterativo, bastando simular a pilha de recursão, caso não se conheça outro tipo de definição não-recursiva. A versão não-recursiva é, em geral, mais eficiente do que a recursiva. A escolha por uma função recursiva é feita quando tempo/espaço não são problemáticos, ou se a versão recursiva for mais simples.
44 Material preparado por Prof a Roseli A. Francelin Romero e Valéria Feltrim (PAE) 1999 Revisado em 2008 por Roseli Romero Fim
SCC Capítulo 2 Recursão
SCC-501 - Capítulo 2 João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis
INF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 6 Ordenação de Vetores 01/10/2015 (c) Dept. Informática - PUC-Rio 1 Tópicos Introdução Ordenação bolha (bubble sort) Ordenação por seleção (selection sort) 01/10/2015 (c) Dept. Informática
Recursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição
Recursividade Prof. Cesar Augusto Tacla Métodos iterativos Métodos iterativos utilizam estruturas de repetição For While Do while Normalmente, um método invoca outros métodos, não a si mesmo. 2 1 Recursividade
Arquivos Sequenciais. Estruturas de Dados II Vanessa Braganholo
Arquivos Sequenciais Estruturas de Dados II Vanessa Braganholo Arquivos Sequenciais } Pq arquivos sequenciais? Relembrando } Relembrando: uma tabela ou arquivo é um conjunto de registros que possuem a
ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro Sala 110 Prédio da Computação IECE - ITA
ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro [email protected] Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA MÉTODOS MAIS EFICIENTES QUE O(N 2 ) Método Quicksort Método
ALGORITMOS AVANÇADOS UNIDADE II Recursividade. Luiz Leão
Luiz Leão [email protected] http://www.luizleao.com Conteúdo Programático 2.1 - Definições recursivas 2.2 - Como implementar recursividade 2.3 - Quando não usar recursividade 2.4 - Desenvolvendo algoritmos
Programação Estruturada
Programação Estruturada Recursão Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Recursão Recursão 1 Recursão 2
Ordenação: QuickSort. Prof. Túlio Toffolo BCC202 Aula 15 Algoritmos e Estruturas de Dados I
Ordenação: QuickSort Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 15 Algoritmos e Estruturas de Dados I QuickSort Proposto por Hoare em 1960 e publicado em 1962. É o algoritmo de ordenação
Análise de Algoritmos Parte 4
Análise de Algoritmos Parte 4 Túlio Toffolo [email protected] www.toffolo.com.br BCC202 Aula 07 Algoritmos e Estruturas de Dados I Como escolher o algoritmo mais adequado para uma situação? (continuação)
Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler
Aula 3 Listas Lineares Sequenciais Ordenadas prof Leticia Winkler 1 Listas Lineares Sequenciais Ordenadas Elementos da lista estão dispostos num vetor (contíguos na memória) e ordenado de acordo com alguma
CURSO DE ESTRUTURA DE DADOS MÓDULO: ALGORITMOS DE ORDENAÇÃO E PESQUISA PROFESSORA: DANIELA ELOISE FLÔR COLABORADORA: MARIA CAROLINA SILA VANUCHI
CURSO DE ESTRUTURA DE DADOS MÓDULO: ALGORITMOS DE ORDENAÇÃO E PESQUISA PROFESSORA: DANIELA ELOISE FLÔR COLABORADORA: MARIA CAROLINA SILA VANUCHI O QUE SÃO ALGORITMOS DE ORDENAÇÃO? São algoritmos que organizam
Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.
Listas Estáticas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic [email protected] Instituto de
Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I
Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Algoritmos de busca Basicamente podem ser citadas duas estratégias para procurar (ou buscar) algo em uma coleção de dados: Busca
Projeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Apresentação da Disciplina Edirlei Soares de Lima Por que Estudar Algoritmos? Razões Práticas e Teóricas: Devemos conhecer um conjunto de algoritmos
Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches
CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-234 2) Algoritmos recursivos Indução matemática, recursão, recorrências Indução matemática Uma
Estrutura de Dados. Algoritmos de Ordenação. Prof. Othon M. N. Batista Mestre em Informática
Estrutura de Dados Algoritmos de Ordenação Prof. Othon M. N. Batista Mestre em Informática Roteiro Introdução Ordenação por Inserção Insertion Sort Ordenação por Seleção Selection Sort Ordenação por Bolha
Projeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 09 Algoritmos de Ordenação Edirlei Soares de Lima Ordenação Problema: Entrada: conjunto de itens a 1, a 2,..., a n ; Saída: conjunto de itens
Permite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade.
222222222222222222222222222 8 - FUNÇÕES 81 - Características básicas É um trecho independente de código, com objetivos bem definidos Programas em C, geralmente consistem em várias pequenas funções, ao
INF 1010 Estruturas de Dados Avançadas
INF 1010 Estruturas de Dados Avançadas Complexidade de Algoritmos 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.2 1 Introdução Complexidade computacional Termo criado por Hartmanis e Stearns (1965)
CES-11. Noções de complexidade de algoritmos. Complexidade de algoritmos. Avaliação do tempo de execução. Razão de crescimento desse tempo.
CES-11 Noções de complexidade de algoritmos Complexidade de algoritmos Avaliação do tempo de execução Razão de crescimento desse tempo Notação O Exercícios COMPLEXIDADE DE ALGORITMOS Importância de análise
Recursividade. Objetivos do módulo. O que é recursividade
Recursividade Objetivos do módulo Discutir o conceito de recursividade Mostrar exemplos de situações onde recursividade é importante Discutir a diferença entre recursividade e iteração O que é recursividade
Capacitação em Linguagem C Parte 2
Capacitação em Linguagem C Parte 2 Andrey Souto Maior Giuseppe Portolese Universidade Estadual de Maringá - Centro de Tecnologia Departamento de Informática 22 de outubro de 2015 Sumário I Tipos abstratos
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Recursividade
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Recursividade Conceito de Recursividade Fundamental em Matemática e Ciência da Computação Um programa recursivo é um programa que chama a si mesmo
Aula 18 Algoritmos básicos de busca e classificação
Aula 18 Algoritmos básicos de busca e classificação Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas e classificação de tabelas estão entre os mais usados. Considere por exemplo
Recursividade. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Recursividade David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Conceito de Recursividade Fundamental em Matemática e Ciência da Computação Um programa recursivo é um programa que chama a si
ALGORITMOS DE ORDENAÇÃO
ALGORITMOS DE ORDENAÇÃO Prof. André Backes Conceitos básicos 2 Ordenação Ato de colocar um conjunto de dados em uma determinada ordem predefinida Fora de ordem 5, 2, 1, 3, 4 Ordenado 1, 2, 3, 4, 5 OU 5,
Árvores Binárias de Pesquisa (ABP) INF01203 Estruturas de Dados. Operações. Árvores Binárias de Pesquisa (ABP) Caminhamento Central à Esquerda
Árvores Binárias de Pesquisa (ABP) INF03 Estruturas de Dados Árvores Binárias de Pesquisa apresentam uma relação de ordem entre os nodos ordem é definida por um campo denominado chave esq chave inf dir
Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1
Estruturas de Dados Módulo 17 - Busca 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)
MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016
MC102 Aula 26 Recursão Instituto de Computação Unicamp 17 de Novembro de 2016 Roteiro 1 Recursão Indução 2 Recursão 3 Fatorial 4 O que acontece na memória 5 Recursão Iteração 6 Soma em um Vetor 7 Números
BCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 13: Ordenação: MergeSort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes Email: [email protected]
Análise de Problemas Recursivos. Algoritmos e Estruturas de Dados Flavio Figueiredo (
Análise de Problemas Recursivos Algoritmos e Estruturas de Dados 2 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Lembrando de Recursividade Procedimento que chama a si mesmo Recursividade permite
Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick F. M.
Quick Sort Considerações Sobre Algoritmos de Ordenação Estagiário PAE: Jesimar da S. Arantes Professor: Claudio F. M. Toledo 27 de Setembro de 2017 Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick
QuickSort. Estrutura de Dados II Jairo Francisco de Souza
QuickSort Estrutura de Dados II Jairo Francisco de Souza Particionamento Mecanismo principal dentro do algoritmo do QuickSort Para particionar um determinado conjunto de dados, separamos de um lado todos
Programação de Computadores II. Cap. 17 Busca
Programação de Computadores II Cap. 17 Busca Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:
MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017
PROVA 1 MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017 Nome: Número USP: Instruções: (1 ) Esta prova é individual. (2 ) Não destaque as folhas deste caderno. (3 ) A prova consiste de 6
INF1007: Programação 2 7 Busca em Vetores. 01/04/2014 (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 7 Busca em Vetores 01/04/2014 (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Busca em vetor Busca linear Busca binária 01/04/2014 (c) Dept. Informática - PUC-Rio 2 Busca em
Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo
Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária Túlio Toffolo www.decom.ufop.br/toffolo Pesquisa em Memória Primária n Introdução - Conceitos Básicos n Pesquisa Sequencial n Pesquisa Binária n Árvores
Quicksort. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Quicksort David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Quicksort Proposto por Hoare em 1960 e publicado em 1962. É o algoritmo de ordenação interna mais rápido que se conhece para uma ampla
SSC300- Linguagens de Programação e Aplicações Profa Vânia de Oliveira Neves. ICMC/USP São Carlos
Funções SSC300- Linguagens de Programação e Aplicações Profa Vânia de Oliveira Neves ICMC/USP São Carlos Slides baseados no material gentilmente cedido pela Profa Simone Senger Souza 2 MODULARIZAÇÃO Um
Métodos de Ordenação Parte I
Estrutura de Dados II Métodos de Ordenação Parte I Prof a Márcio Bueno [email protected] / [email protected] Material baseado nos materiais da Prof a Ana Eliza e Prof. Robson Lins Rearranjar
Recursividade. Prof. Jesus José de Oliveira Neto
Recursividade Prof. Jesus José de Oliveira Neto Algoritmos podem ser definidos de duas formas: Forma iterativa ou não recursiva: utiliza laços de repetição (while, for, do/while) Forma recursiva: métodos
5. Análise de Complexidade de Algoritmos. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006)
5. Análise de Complexidade de Algoritmos João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006) FEUP - MIEEC Prog 2-2006/2007 Introdução Algoritmo: conjunto
Análise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Métodos de busca - seqüêncial - binária Prof. Rodrigo Rocha [email protected] http://www.bolinhabolinha.com Onde Estamos Ementa Revisão: Estrutura de dados;crescimento
Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Medida do Tempo de Execução de um Programa O projeto de algoritmos é fortemente influenciado pelo
AED2 - Aula 11 Problema da separação e quicksort
AED2 - Aula 11 Problema da separação e quicksort Projeto de algoritmos por divisão e conquista Dividir: o problema é dividido em subproblemas menores do mesmo tipo. Conquistar: os subproblemas são resolvidos
Recursividade. Recursividade
A recursão é uma técnica que define um problema em termos de uma ou mais versões menores deste mesmo problema. Esta ferramenta pode ser utilizada sempre que for possível expressar a solução de um problema
Linguagem e Técnicas em Programação. Gilson de Souza Carvalho
Gilson de Souza Carvalho [email protected] 4.3 Comandos de repetição encadeados Apesar de seguir o mesmo padrão de encadeamento de outros comandos já vistos, a utilização de comandos de repetição
Programação II. Busca em Vetor (search) Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Busca em Vetor (search) Bruno Feijó Dept. de Informática, PUC-Rio Busca em Vetor Problema: Entrada: vetor v com n elementos elemento d a procurar Saída m se o elemento procurado está em
Edital de Seleção 032/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões
Edital de Seleção 032/2016 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: INSCRIÇÃO: Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome e o número da sua
Aprendendo a Programar Programando numa Linguagem Algorítmica Executável (ILA)
Jaime Evaristo Sérgio Crespo Aprendendo a Programar Programando numa Linguagem Algorítmica Executável (ILA) Segunda Edição Capítulo 7 Versão 13052010 7. Pesquisa e Ordenação 7.1 Introdução Embora os problemas
Técnicas de projeto de algoritmos: Indução
Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 08/2008
Análise de Algoritmos
Análise de Algoritmos Parte 1 Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 04 Algoritmos e Estruturas de Dados I Qual a diferença entre um algoritmo e um programa? Como escolher o algoritmo
Lógica de Programação I
Gilson de Souza Carvalho [email protected] 1 Comando Do/While Além do comando while, existem outras estruturas para implementar laços repetitivos. O comando Do/While funciona de forma similar ao
Método de ordenação - objetivos:
Método de ordenação - objetivos: Corresponde ao processo de rearranjar um conjunto de objetos em uma ordem ascendente ou descendente. Facilitar a recuperação posterior de itens do conjunto ordenado. São
Universidade da Madeira. 1. Recursão. 3. Busca. Profa. Dra. Laura Rodríguez Estruturas de dados e algoritmos 2
Profa. Dra. Laura Rodríguez E-mail: [email protected] Universidade da Madeira 1. Recursão 2. Ordenação 3. Busca Profa. Dra. Laura Rodríguez Estruturas de dados e algoritmos 2 1 1. Recursão 2. Ordenação 3.
Algoritmos e Estruturas de Dados LEE 2013/2014. popular devido à facilidade de implementação e eficiência
Algoritmos e Estruturas de Dados LEE 2013/2014 Algoritmos de Ordenação Parte II Quicksort [1] Provavelmente o algoritmo mais usado inventado nos anos 60 muito estudado e analisado desempenho bem conhecido
CIC 110 Análise e Projeto de Algoritmos I
CIC 110 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá sort AULA 02 Ordenação A classificação é um problema de design de algoritmo fundamental.
Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo
Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo [email protected] www.tiagodemelo.info Observações O conteúdo dessa aula é parcialmente proveniente do Capítulo 11 do livro Fundamentals of
O Problema da Ordenação Métodos de Ordenação Parte 1
Métodos de Ordenação Parte 1 SCC-201 Introdução à Ciência da Computação II Rosane Minghim 2010 Ordenação (ou classificação) é largamente utilizada Listas telefônicas e dicionários Grandes sistemas de BD
Construção de Algoritmos II Aula 06
exatasfepi.com.br Construção de Algoritmos II Aula 06 André Luís Duarte Porque mil anos são aos teus olhos como o dia de ontem que passou, e como a vigília da noite. Salmos 90:4 Recursividade e complexidade
