CIC 110 Análise e Projeto de Algoritmos I
|
|
- Lúcia Lemos Fraga
- 5 Há anos
- Visualizações:
Transcrição
1 CIC 110 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá
2 sort AULA 02
3 Ordenação A classificação é um problema de design de algoritmo fundamental. Muitos algoritmos eficientes usam a classificação como uma subrotina, porque geralmente é mais fácil processar dados se os elementos estiverem em uma ordem ordenada. Por exemplo, o problema uma matriz contém dois elementos iguais? É fácil de resolver usando a classificação. Se a matriz contiver dois elementos iguais, eles serão próximos uns dos outros após a classificação, por isso é fácil encontrá-los. Além disso, o problema qual é o elemento mais frequente em uma matriz? Pode ser resolvido da mesma forma.
4 Ordenação Existem muitos algoritmos para classificação, e também são bons exemplos de como aplicar diferentes técnicas de projeto de algoritmo. Os algoritmos de classificação gerais eficientes funcionam no tempo O(n log n) e muitos algoritmos que utilizam a classificação como uma sub-rotina também têm essa complexidade de tempo. Qual seria a ordem do sort no vector?
5 Ordenação O problema básico na classificação é o seguinte: Dada uma matriz que contém n elementos, sua tarefa é classificar os elementos em ordem crescente.
6 Por exemplo o vetor Ordenação Será o seguinte após a classificação:
7 Bubble sort O bubble sort, ou ordenação por flutuação (literalmente "por bolha"), é um algoritmo de ordenação dos mais simples. A ideia é percorrer o vector diversas vezes, e a cada passagem fazer flutuar para o topo o maior elemento da sequência. for (int i = 0; i < n; i++) for (int j = 0; j < n-1; j++) if (v[j] > v[j+1]) swap(v[j],v[j+1]);
8 Programa com Bubble sort #include <bits/stdc++.h> #define pb push_back using namespace std; int main() vector <int> v; vector <int>:: iterator it; int n, x; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &x); v.pb(x); for (int i = 0; i < n; i++) for (int j = 0; j < n-1; j++) if (v[j] > v[j+1]) swap(v[j],v[j+1]); for (it = v.begin(); it!= v.end(); ++it) printf("%d ", *it); printf("\n"); return 0;
9 Merge sort O merge sort, ou ordenação por mistura, é um exemplo de algoritmo de ordenação por comparação do tipo dividir-para-conquistar. Como o algoritmo Merge Sort usa a recursividade, há um alto consumo de memória e tempo de execução, tornando esta técnica não muito eficiente em alguns problemas.
10 Programa com Merge sort Programa com Merge sort void Juntar(int vetor[], int ini, int meio, int fim, int vetaux[]) int esq = ini; int dir = meio; for (int i = ini; i < fim; ++i) if ((esq < meio) and ((dir >= fim) or (vetor[esq] < vetor[dir]))) vetaux[i] = vetor[esq]; ++esq; else vetaux[i] = vetor[dir]; ++dir; for (int i = ini; i < fim; ++i) vetor[i] = vetaux[i];
11 Programa com Merge sort void MergeSort(int vetor[], int inicio, int fim, int vetoraux[]) if ((fim - inicio) < 2) return; int meio = ((inicio + fim)/2); MergeSort(vetor, inicio, meio, vetoraux); MergeSort(vetor, meio, fim, vetoraux); Juntar(vetor, inicio, meio, fim, vetoraux); void MergeSort(int vetor[], int tamanho) int vetoraux[tamanho]; MergeSort(vetor, 0, tamanho, vetoraux);
12 Programa com Merge sort int main() int n, v[1001]; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &v[i]); MergeSort(v, n); for (int i = 0; i < n; i++) printf("%d ", v[i]); printf("\n"); return 0;
13 Programa com Merge sort Não esqueçam que tem que colocar o cabeçario. #include <bits/stdc++.h> using namespace std; Será que tem jeito mais simples?
14 Counting sort É um algoritmo de ordenação estável cuja complexidade é O(n). As chaves podem tomar valores entre 0 e M-1. Se existirem k chaves com valor 0, então ocupam as primeiras k posições do vetor final: de 0 a k-1. A ideia básica do counting sort é determinar, para cada entrada x, o número de elementos menor que x. Essa informação pode ser usada para colocar o elemento x diretamente em sua posição no array de saída. Por exemplo, se há 17 elementos menor que x, então x pertence a posição 18. Esse esquema deve ser ligeiramente modificado quando houver vários elementos com o mesmo valor, uma vez que nós não queremos colocar eles na mesma posição.
15 Programa com Counting sort #include <bits/stdc++.h> using namespace std; #define TAM 1000 //Tamanho máximo do maior elemento do vetor void countsort(int vetor[], int n) int ordenado[n + 1]; int VetorInd[TAM + 1], i; memset(vetorind, 0, sizeof(vetorind)); for(i = 0; i < n; ++i) ++VetorInd[vetor[i]]; for (i = 1; i <= TAM; ++i) VetorInd[i] += VetorInd[i-1];
16 Programa com Counting sort for (i = 0; i < n; ++i) ordenado[vetorind[vetor[i]]-1] = vetor[i]; --VetorInd[vetor[i]]; for (i = 0; i < n; ++i) vetor[i] = ordenado[i];
17 Programa com Counting sort int main() int n, v[tam + 1]; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &v[i]); countsort(v, n); for (int i = 0; i < n; i++) printf("%d ", v[i]); printf("\n"); return 0;
18 Sorting in C++ Em todas as linguagens de programação atuais, já existe excelente ordenadores. Na linguagem de programação a biblioteca padrão C ++ contém o tipo de função que pode ser facilmente usado para classificar arrays e outras estruturas de dados. Há muitos benefícios em usar uma função da biblioteca. Primeiro, economiza tempo porque não há necessidade de implementar a função. Em segundo lugar, a implementação da biblioteca é certamente correta e eficiente: não é provável que uma função de classificação feita na hora seja melhor.
19 Sorting in C++ O código a seguir classifica um vetor em ordem crescente: vector<int> v = 4, 2, 5, 3, 5, 8, 3; sort(v.begin(),v.end()); Para classificar em ordem decrescente basta usar o código: sort(v.rbegin(),v.rend()); Classificar somente alguma parte do vetor sort(v.begin()+2,v.end()-2);
20 Estrutura definida pelo usuário As estruturas definidas pelo usuário não possuem um operador de comparação automaticamente. O operador deve ser definido dentro da estrutura como um operador de função <, cujo parâmetro é outro elemento do mesmo tipo. O operador deve retornar verdadeiro se o elemento for menor do que o parâmetro e falso de outra forma. Por exemplo, a seguinte estrutura P contém as coordenadas x e y de um ponto. O operador de comparação é definido para que os pontos sejam ordenados principalmente pela coordenada x e secundariamente pela coordenada y.
21 Estrutura definida pelo usuário struct P int x, y; bool operator<(const P &p) if (x!= p.x) return x < p.x; else return y < p.y; ;
22 Função comparação Também é possível fornecer uma função de comparação externa à função de classificação como uma função de retorno de chamada. Por exemplo, a seguinte função de comparação comp classifica strings principalmente por comprimento e secundariamente por ordem alfabética: bool comp(string a, string b) if (a.size()!= b.size()) return a.size() < b.size(); return a < b; Agora, um vetor de strings pode ser classificado da seguinte forma: sort(v.begin(), v.end(), comp);
23 Pesquisa binária Um método geral para procurar um elemento em uma array é usar um loop for que itere através dos elementos do array. Por exemplo, o código a seguir busca um elemento x em um array: for (int i = 0; i < n; i++) if (array[i] == x) // x encontrado no índice i
24 Pesquisa binária A complexidade do tempo dessa abordagem é O(n), porque no pior caso, é necessário verificar todos os elementos do vetor. Se a ordem dos elementos for arbitrária, esta também é a melhor abordagem possível, porque não há informações adicionais disponíveis em que na matriz devemos procurar o elemento x. No entanto, se o vetor estiver ordenado, a situação é diferente. Neste caso, é possível realizar a busca muito mais rápido, porque a ordem dos elementos no vetor orienta a pesquisa. O algoritmo de pesquisa binário a seguir procura de forma eficiente um elemento no vetor ordenado no tempo O(log n).
25 Método 1 A maneira usual de implementar a busca binária se assemelha a procurar uma palavra em um dicionário. A pesquisa mantém uma região ativa no vetor, que inicialmente contém todos os elementos do vetor. Então, uma série de etapas é executada, cada uma das quais metade do tamanho da região. Em cada etapa, a pesquisa verifica o elemento intermediário da região ativa. Se o elemento do meio for o elemento alvo, a busca será encerrada. Caso contrário, a pesquisa recursivamente continua na metade esquerda ou direita da região, dependendo do valor do elemento médio. A ideia acima pode ser implementada da seguinte forma:
26 Método 1 int a = 0, b = n-1; while (a <= b) int k = (a+b)/2; if (array[k] == x) // x encontrado no índice i if (array[k] > x) b = k-1; else a = k+1; Nesta implementação, a região ativa é a... b, e inicialmente a região é 0... N - 1. O algoritmo faz a metade do tamanho da região em cada passo, de modo que a complexidade do tempo é O(log n).
27 Método 2 Um método alternativo para implementar pesquisa binária é baseado em uma maneira eficiente de iterar através dos elementos do vetor. A ideia é fazer saltos e diminuir a velocidade quando nos aproximamos do elemento alvo. A pesquisa passa pelo vetor da esquerda para a direita, e o comprimento de salto inicial é n/2. Em cada passo, o comprimento do salto será dividido pela metade: primeiro n/4, então n/8, n/16, etc., até que finalmente o comprimento seja 1. Após os saltos, o elemento alvo foi encontrado ou sabemos que não existe no vetor. A ideia acima pode ser implementada da seguinte forma:
28 Método 2 int k = 0; for (int b = n/2; b >= 1; b /= 2) while (k+b < n && array[k+b] <= x) k += b; if (array[k] == x) // x encontrado no índice k Nesta implementação, a região ativa é a... b, e inicialmente a região é 0... N - 1. O algoritmo faz a metade do tamanho da região em cada passo, de modo que a complexidade do tempo é O(log n).
29 Função da C++ A biblioteca padrão C ++ contém as seguintes funções baseadas na pesquisa binária e funcionam em tempo logarítmico: lower_bound: retorna um ponteiro para o primeiro elemento da matriz cujo valor é pelo menos x. upper_bound: retorna um ponteiro para o primeiro elemento de matriz cujo valor é maior do que x. equal_range: retorna os dois ponteiros acima.
30 Função da C++ As funções assumem que o vetor está ordenado. Se não existe tal elemento, o ponteiro aponta para o elemento após o último elemento da matriz. Por exemplo, o código a seguir descobre se uma matriz contém um elemento com valor x: auto k = lower_bound(array, array+n, x) - array; if (k < n && array[k] == x) // x encontrado no índice k Então, o código a seguir conta o número de elementos cujo valor é x: auto a = lower_bound(array, array+n, x); auto b = upper_bound(array, array+n, x); printf("%d\n", b - a);
31 Função da C++ Usando equal_range, o código fica mais curto: auto r = equal_range(array, array+n, x); printf("%d\n", r.second - r.first);
32 Encontrando a menor solução Um uso importante para pesquisa binária é encontrar a posição onde o valor de uma função muda. Suponha que desejamos encontrar o menor valor k que seja uma solução válida para um problema. Recebemos uma função ok(x) que retorna true se x for uma solução válida e false caso contrário. Além disso, sabemos que ok(x) é falso quando x < k e verdadeiro quando x k. A situação é a seguinte: x 0 1 k 1 k k + 1 ok(x) false false false true true
33 Encontrando a menor solução Agora, o valor de k pode ser encontrado usando a pesquisa binária: int x = -1; for (int b = z; b >= 1; b /= 2) while (!ok(x+b)) x += b; int k = x+1;
34 Encontrando a menor solução A pesquisa encontra o maior valor de x para o qual ok(x) é falso. Assim, o próximo valor k = x + 1 é o menor valor possível para o qual ok(k) é verdadeiro. O comprimento de salto inicial z deve ser grande o suficiente, por exemplo, algum valor pelo qual sabemos de antemão que ok(z) é verdade. O algoritmo chama a função ok tem tempo O(log z), então a complexidade do tempo total depende da função ok. Por exemplo, se a função funciona no tempo O(n), a complexidade do tempo total é O(n log z).
35 Encontrando o valor máximo A busca em binário também pode ser usada para encontrar o valor máximo para uma função que está aumentando primeiro e depois diminuindo. Nossa tarefa é encontrar uma posição k tal que f(x) < f(x + 1) quando x <k, e f(x) > f(x + 1) quando x k. A ideia é usar a pesquisa binária para encontrar o maior valor de x para o qual f(x) < f(x + 1). Isso implica que k = x + 1 porque f(x + 1) > f(x + 2). O código a seguir implementa a pesquisa:
36 Encontrando o valor máximo int x = -1; for (int b = z; b >= 1; b /= 2) while (f(x+b) < f(x+b+1)) x += b; int k = x+1; Observe que, ao contrário da pesquisa binária ordinária, aqui não é permitido que os valores consecutivos da função sejam iguais. Nesse caso, não seria possível saber como continuar a pesquisa.
37 Exercício UVA 299 UVA 612 UVA UVA UVA UVA UVA Timus 1280 Timus 1546 Timus 1568 Timus 1446 Codeforces 451B Codeforces 362C Codeforces 340D Em Breve no codepit.io
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á AULA 02 C++ e bibliotecas Vector C++ Os programas que iremos usar vai ser em C++ e ter o
Leia maisCIC 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á AULA 09 Consultas de Intervalo Consulta de Intervalo Neste capítulo, discutimos estruturas
Leia maisCIC 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á Data structures AULA 04 Estrutura de Dados Uma estrutura de dados é uma maneira de armazenar
Leia maisEstrutura 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
Leia maisOrdenação. Prof. Túlio A. M. Toffolo Prof. Marco Antonio M. Carvalho BCC402 Aula 04 Algoritmos e Programação Avançada
Ordenação Prof. Túlio A. M. Toffolo Prof. Marco Antonio M. Carvalho http://www.toffolo.com.br BCC402 Aula 04 Algoritmos e Programação Avançada Aplicações Como testar se todos os elementos de um conjunto
Leia maisO 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
Leia maisALGORITMOS 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,
Leia maisMétodos de Ordenação: Selection, Insertion, Bubble, Merge (Sort)
Métodos de Ordenação: Selection, Insertion, Bubble, Merge (Sort) Hebert Coelho e Nádia Félix Ordenação É a operação de rearranjar os dados em uma determinada ordem. Problema da ordenação - Definição formal
Leia maisLinguagem C: Ordenação
Instituto de C Linguagem C: Ordenação Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Tópicos Principais Introdução Algoritmos de ordenação Ordenação
Leia maisListas 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 paulovic@icmc.usp.br Instituto de
Leia maisAula 09. Percurso em grafo
Logo Aula 09 Percurso em grafo 2 Percurso de grafo Veremos agora a pesquisa em profundidade e pesquisa em largura de um grafo. Ambos os algoritmos recebem um nó inicial no grafo, e eles visitam todos os
Leia maisAula 05. Modularização Função Subrotina Recursividade
Logo Aula 05 Modularização Função Subrotina Recursividade 2 Modularização A modularização é um processo que aborda os aspectos da decomposição de algoritmos em módulos. Módulo é um grupo de comandos, constituindo
Leia maisAnálise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Algoritmos Divisão e Conquista Construção incremental Resolver o problema para um sub-conjunto dos elementos de entrada; Então, adicionar
Leia maisAula 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
Leia maisEstruturas 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)
Leia maisProjeto 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
Leia maisEstruturas de Dados Algoritmos de Ordenação
Estruturas de Dados Prof. Eduardo Alchieri (introdução) Considere uma sequência arbitrária S = {s1, s2, s3,...sn} composta por n 0 elementos retirados do conjunto universo U O objetivo da ordenação é arrumar
Leia maisProgramaçã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
Leia maisBCC202 - 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: reifortes@iceb.ufop.br
Leia maisCIC 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á AULA 07 Programação Dinâmica Programação Dinâmica A programação dinâmica é uma técnica que
Leia maisAula 08. Estruturas de dados Árvore e Grafo
Logo Aula 08 Estruturas de dados Árvore e Grafo 2 Árvore Estruturas estudadas até agora não são \ adequadas para representar dados que devem ser dispostos de maneira hierárquica Ex., hierarquia de pastas
Leia maisALGORITMOS DE ORDENAÇÃO RECURSIVOS
1/14 ALGORITMOS DE ORDENAÇÃO RECURSIVOS Ordenação rápida ( Quicksort ) 2/14 Ordenação rápida ( Quicksort ) Ideia - Baseia-se num princípio muito simples que, quando aplicado recursivamente, acaba por ordenar
Leia maisBusca em Arranjos. Busca em arranjos. Busca em arranjos. Programação de Computadores. Busca em Arranjos
Busca em Arranjos Programação de Computadores Busca em Arranjos Como sabemos, arranjos são uma maneira de se armazenar muita informação em série Esta informação, em situações práticas, é usualmente dividida
Leia maisListas Estáticas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista
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 paulovic@icmc.usp.br Instituto de
Leia maisINF111 Programação II Aulas 11, 12, 13 Ordenação
INF Programação II Aulas,, Ordenação Departamento de Informática UFV Ordenação A ordenação é o processo de organizar um conunto (vetor) de n obetos ou registros segundo uma determinada ordem crescente
Leia maisALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão
UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 3.1 - Definição 3.2 - Dividir para conquistar 3.3 - Problema da
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Programação II 2º Semestre Exame Época Norma (15 val) Resolução 22/06/2018 1 [1,00 val + 1,00 val] - Memória Dinâmica Considere as seguintes declarações de variáveis: int
Leia maisUniversidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet
Aula 17 Quick Sort Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno Ordenação
Leia maisOrdenaçã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
Leia maisESTRUTURA DE DADOS I AULA I
ESTRUTURA DE DADOS I AULA I PROF. ME. HÉLIO ESPERIDIÃO O que é um dado? Dado pode ser definido como a matéria-prima originalmente obtida de uma ou mais fontes (etapa de coleta). o que é a informação A
Leia maisOrdenação: MergeSort. Prof. Túlio Toffolo BCC202 Aula 14 Algoritmos e Estruturas de Dados I
Ordenação: MergeSort Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 14 Algoritmos e Estruturas de Dados I DIVISÃO E CONQUISTA Motivação É preciso revolver um problema com uma entrada grande
Leia maisCarlos Eduardo Batista. Centro de Informática - UFPB
Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Aritmética de ponteiros em C (continuação) O que acontece na memória? Ponteiro para ponteiro etc. Métodos de pesquisa
Leia maisProgramação Estruturada
Programação Estruturada Ordenação Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC O problema da ordenação Ordenação
Leia maisMódulo 16 - Ordenação
Estruturas de Dados Módulo 16 - Ordenação 15/05/2013 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus
Leia maisSub-rotinas David Déharbe
Sub-rotinas David Déharbe 1 1 Objetivos da aula Os conceitos de sub-rotina, funções e procedimentos; Como usar sub-rotinas em C: parâmetros de sub-rotinas: parâmetros formais e parâmetros efetivos. passagem
Leia maisAlgoritmos de Ordenação
Algoritmos de Ordenação! Problema: encontrar um número de telefone em uma lista telefônica! simplificado pelo fato dos nomes estarem em ordem alfabética! e se estivesse sem uma ordem?! Problema: busca
Leia maisMétodos de Ordenação Parte 2
Estrutura de Dados II Métodos de Ordenação Parte 2 Prof a Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material baseado nos materiais da Prof a Ana Eliza e Prof. Robson Lins Introdução
Leia maisAlgoritmos e Estruturas de Dados I1 Prof. Eduardo 1
Algoritmos e Estruturas de Dados I1 Prof. Eduardo 1 ORDENAÇÃO E BUSCA Ordenação: Bublesort, seleção direta e inserção direta. Busca: linear e binária 1 - ORDENAÇÃO (CLASSIFICAÇÃO) DE DADOS Em diversas
Leia maisCarlos Eduardo Batista. Centro de Informática - UFPB
Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Métodos de pesquisa e classificação de dados (continuação) Estruturas de Dados 2 Algoritmo de busca Recebe como argumento
Leia maisÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior
ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior Árvore Binária de Busca (ABB) o valor associado à raiz é sempre maior que o valor associado a qualquer nó da sub-árvore à esquerda
Leia maisCIC 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á Algoritmos Gulosos AULA 06 Algoritmos Gulosos Um algoritmo guloso constrói uma solução para
Leia maisAnálise de complexidade
Introdução Algoritmo: sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador) Estratégia: especificar (definir propriedades) arquitectura
Leia maisALGORITMOS E ESTRUTURAS DE DADOS CES-11
ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA CAP. 5. TÉCNICAS DE ORDENAÇÃO 5.1. Introdução 5.2. Métodos
Leia maisAula 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
Leia maisUniversidade Federal do ABC Avaliação Disciplina Turma Professor Data Instruções para a prova (leia antes de começar): SelectionSort selectonsortrec
Universidade Federal do ABC Avaliação: Prova 02 Disciplina: BC1424 - Algoritmos e Estruturas de Dados I Turma: Noturno Professor: Jesús P. Mena-Chalco Data: 03/05/2016 Nome completo: RA: Instruções para
Leia maisDepartamento 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
Leia maisProgramação de Computadores II. Cap. 16 Ordenação
Programação de Computadores II Cap. 16 Ordenação Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Algoritmos e Estruturas de Dados - Bioengenharia 2º Semestre Exame Época Normal Resolução 13/junho/2015 A. [3.5 val] Algoritmos de ordenação e de pesquisa Considere-se as
Leia maisProgramação Estruturada
Programação Estruturada Ponteiros Parte 1 Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Ponteiros Ponteiro Ponteiros
Leia maisMétodos de Classificação
Métodos de Classificação 261 Objetivos e Caracterizações O acesso a um conjunto de dados é facilitado se o mesmo está armazenado conforme uma certa ordem, baseada num critério conhecido. O objetivo básico
Leia maisCIC 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á Manipulação de bits AULA 10 Manipulação de bits Todos os dados em programas de computador
Leia maisListas (Parte 1) Túlio Toffolo BCC202 Aula 09 Algoritmos e Estruturas de Dados I
Listas (Parte 1) Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br BCC202 Aula 09 Algoritmos e Estruturas de Dados I Ementa do Curso Tipos Abstratos de Dados / Alocação Dinâmica Análise de Algoritmos
Leia maisAlgoritmos e Estrutura de Dados
Algoritmos e Estrutura de Dados Fabrício Olivetti de França 02 de Fevereiro de 2019 Topics 1. Algoritmos de Ordenação Eficientes 1 Algoritmos de Ordenação Eficientes Heap Sort Na primeira aula de ordenação
Leia maisINF1007: 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
Leia maisCCO 016 Fundamentos de Programação
CCO 016 Fundamentos de Programação Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá Aula 05 Entrada de dados Leia scanf ou cin Entrada de Dados Entrada de dados compreende a operação
Leia maisIntrodução a Programação. Ponteiros e Passagem de Argumentos por Referência
Introdução a Programação Ponteiros e Passagem de Argumentos por Referência Tópicos da Aula Hoje aprenderemos a manipular endereços de memória ou ponteiros Variáveis e Endereços Conceito de Ponteiro Operadores
Leia maisUniversidade Estadual do Maranhão Curso de Engenharia da Computação Mestrado em Engenharia da Computação e Sistemas
Notas de Aulas Sub-rotinas Prof. Dr. Luís Carlos Costa Fonseca São Luís 2013 Geralmente, problemas complexos exigem algoritmos complexos, mas sempre é possível dividir um problema grande em problemas menores.
Leia maisLista Ordenada. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35
Lista Ordenada Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35 Conteúdo Definição Operações Representações Contígua Encadeada Aplicação Exercícios 2
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Programação II 1º Semestre Frequência 2 Resolução 07/01/2019 1. [1,25 val] - Análise de Complexidade dos Algoritmos Considere o seguinte bloco de código em linguagem C: for
Leia maisÁrvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira
Árvores SCC-202 Algoritmos e Estruturas de Dados I Lucas Antiqueira Listas e árvores Listas lineares Um nó após o outro, adjacentes Nó sucessor e antecessor Diversas aplicações necessitam de estruturas
Leia maisTCC 00308: Programação de Computadores I Introdução
TCC 00308: Programação de Computadores I 2017.1 Introdução Processo de resolução de problemas Definição dos requisitos do problema (fazer o programa certo) Entradas Cálculos Casos especiais Saídas Desenvolvimento
Leia maisPesquisa. Pesquisa. Pesquisa. O problema de procurar(pesquisar) alguma informação numa tabela ou num catálogo é muito comum Exemplo:
Pesquisa Pesquisa em Vetor SSC300- Linguagens de Programação e Aplicações O problema de procurar(pesquisar) alguma informação numa tabela ou num catálogo é muito comum Exemplo: procurar o telefone de uma
Leia mais3) A função de Fibonacci, F: N N, no conjunto dos naturais, é definida recursivamente por F(0) = 0, F(1) = 1, e F(n) = F(n-1) + F(n-2) para n > 1
1) Analise a(s) afirmativa(s) abaixo. Universidade Federal do Estado do Rio de Janeiro Processo Seletivo Discente Transferência Externa 009 Centro de Ciências Exatas e Tecnologia - CCET I) Correção - os
Leia maisLinguagem C: Algoritmos de Ordenação
Introdução Prof. Paulo R. S. L. Coelho paulo@facom.ufu.br Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Organização Introdução 1 Introdução 2 3 Organização Introdução 1 Introdução 2
Leia maisAlgoritmos e Estruturas de Dados 2005/2006. Algoritmo: conjunto claramente especificado de instruções a seguir para resolver um problema
Vectores: Algoritmos de Pesquisa Algoritmos e Estruturas de Dados 2005/2006 Introdução Algoritmo: conjunto claramente especificado de instruções a seguir para resolver um problema noção de algoritmo muito
Leia maisCapacitaçã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
Leia maisCIC 111 Análise e Projeto de Algoritmos II
CIC 111 Análise e Projeto de Algoritmos II Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 18 Tree queries Finding ancestors Subtrees and paths Lowest common ancestor Offline
Leia maisProgramação II. Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio Árvores Dados organizados de maneira hierárquica Exemplos: arquivos em diretórios, subdivisão de espaço 2D em um
Leia maisALGORITMOS E ESTRUTURAS DE DADOS CES-11
ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Revisão CES-11 Tipos escalares primitivos Tipos constituídos
Leia maisÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos
ÁRVORES BINÁRIAS DE BUSCA Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REFERÊNCIA Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Cap. 4 INSTITUTO DE COMPUTAÇÃO
Leia maisTipos de Dados Abstractos Estruturas Lineares Listas
Tipos de Dados Abstractos Estruturas Lineares Listas FEUP - MIEEC Programação 2-2008/2009 Tipo de Dados Abstractos (TDA) TDA conjunto de objectos + conjuntos de operações abstracção matemática (dados são
Leia maisProjeto 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
Leia maisESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres
ESTRUTURA DE DADOS E ALGORITMOS Árvores Binárias de Busca Cristina Boeres Árvore Binária de Busca 30! construída de tal forma que, para cada nó: nós com chaves menores estão na sub-árvore esquerda nós
Leia maisProgramação II. Ordenação (sort) Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Ordenação (sort) Bruno Feijó Dept. de Informática, PUC-Rio Quick Sort (Ordenação Rápida) Algoritmo Quick Sort (recursivo) O algoritmo de Quick Sort foi desenvolvido por Sir Charles Hoare
Leia maisEstruturas. K&R: Capitulo 6. Estruturas IAED, 2014/2015. Introdução às Estruturas Estruturas e Funções Vectores de Estruturas Typedef Exemplo
Estruturas K&R: Capitulo 6 Estruturas Introdução às Estruturas Estruturas e Funções Vectores de Estruturas Typedef Exemplo 2 1 Motivação Definir uma representação agregada na linguagem C para manipular
Leia maisCES-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
Leia maisCURSO 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
Leia maisFilas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010
Filas de prioridade Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010 Qual a Utilidade das Filas de Prioridade? Trabalhos maiores devem ser executados no fim (mesmo que não tenha sido o último
Leia maisPonteiros. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista
Ponteiros SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências
Leia maisÁrvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação
1 Árvores Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 2 Árvore Binária de Busca Definição: uma árvore binária de busca (ABB) é uma árvore binária na qual
Leia maisAlgoritmos e Estruturas de Dados 2006/2007
Filas de prioridade Algoritmos e Estruturas de Dados 2006/2007 Filas de prioridade Uma fila de prioridade permite, pelo menos, duas operações sobre um conjunto de valores comparáveis: inserção de um elemento
Leia maisSuponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?
Funções Suponha um conjunto habitacional, com várias famílias...... imagina se todas elas morassem em uma única casa? Funções Programação de Computadores 1 de 28 Funções Na Programação, funções são conjuntos
Leia maisCIC 111 Análise e Projeto de Algoritmos II
CIC 111 Análise e Projeto de Algoritmos II Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 27 Square root algorithms Combining algorithms Integer partitions Mo s algorithm Square
Leia maisLinguagem de Programação I. Aula 08 Linguagem C: Arrays
Linguagem de Programação I Aula 08 Linguagem C: Arrays Da Aula Anterior Tipos de dados básicos em C Modificadores de tipo Declaração de Variáveis Operadores em C Estruturas de Controle Nesta Aula Arrays
Leia maisMétodos de Ordenação Parte 3
Estrutura de Dados II Métodos de Ordenação Parte 3 Prof a Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material baseado nos materiais do Prof. Robson Lins Classificação em Memória Primária
Leia maisRecuperação P1 de Estrutura de Dados
Recuperação P1 de Estrutura de Dados Sigla _IED001_ TURMA: A PERÍODO: MAT ( ) NOT ( ) DISCIPLINA:_Estrutura de Dados DATA: / / Argumente com fundamentando as questões da avaliação indicando porque a questão
Leia maisAULA 05 ESTRUTURA DE DADOS
AULA 05 ESTRUTURA DE DADOS Lista ligada (implementação estática) Norton T. Roman & Luciano A. Digiampietri Lista linear sequencial Na última aula aprendemos listas lineares sequenciais. Realizamos a inserção
Leia maisMarcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia
Introdução à Análise de Algoritmos Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia Aula de hoje Nesta aula veremos: Sobre a disciplina Exemplo: ordenação Sobre a disciplina
Leia maisAlgoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira Anilton Joaquim da Silva
Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira ronaldo.co@ufu.br Anilton Joaquim da Silva anilton@ufu.br Introdução Uma das aplicações mais estudadas e realizadas sobre arranjos
Leia maisAlgoritmos de ordenação Ordenação rápida ( Quicksort )
Ordenação rápida ( Quicksort ) Baseia-se num princípio muito simples que, quando aplicado recursivamente, acaba por ordenar o vector. Este princípio é composto por 2 passos essenciais: 1. Escolher um elemento
Leia maisINSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados
INSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados Ano Lectivo de 2006/2007 2 o Semestre 2 o Teste A - 2 de Julho de 2007 Duração: 2h - O teste é sem consulta. - Para cada questão
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Algoritmos e Estruturas de Dados - Bioengenharia 2º Semestre Exame Especial Resolução 19/07/2013 A. [4.75 val] Algoritmos de ordenação e de pesquisa (usando memória estática
Leia maisEstrutura de Dados. Diego Silveira Costa Nascimento
Estrutura de Dados Diego Silveira Costa Nascimento Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte diego.nascimento@ifrn.edu.br 31 de agosto de 2017 Ementa do Curso 1 Introdução
Leia maisProgramaçã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.:
Leia maisMC102 - Algoritmos e programação de computadores. Aula 16: Busca e Ordenação em vetores
MC102 - Algoritmos e programação de computadores Aula 16: Busca e Ordenação em vetores Busca Dada uma coleção de n elementos, pretende-se saber se um determinado elemento valor está presente nessa coleção.
Leia maisProgramaçã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
Leia maisVectores: Algoritmos de Ordenação. Algoritmos e Estruturas de Dados 2009/2010
Vectores: Algoritmos de Ordenação Algoritmos e Estruturas de Dados 2009/2010 Ordenação Problema (ordenação de vector) rearranjar os n elementos de um vector (v) por ordem crescente, ou melhor, por ordem
Leia maisCIC 110 Análise e Projeto de Algoritmos I
CIC 0 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA Caminhos mais curtos Caminhos mais curtos Encontrar um caminho mais curto entre dois nós
Leia mais