INSTITUTO VIANNA JÚNIOR FACULDADES INTEGRADAS VIANNA JÚNIOR ANÁLISE DA COMPLEXIDADE DE ALGORITMOS DE ORDENAÇÃO
|
|
- Natan Nobre Fialho
- 8 Há anos
- Visualizações:
Transcrição
1 INSTITUTO VIANNA JÚNIOR FACULDADES INTEGRADAS VIANNA JÚNIOR ANÁLISE DA COMPLEXIDADE DE ALGORITMOS DE ORDENAÇÃO Lúcia Helena de Magalhães 1 Mônica de Lourdes Souza Batista 2 Teresinha Moreira Magalhães 3 Thiago José de Souza Batista 4 1. Introdução O problema da ordenação é fundamental na computação, e como nos métodos de pesquisa a eficiência da busca sempre é melhor quando trabalhamos com conjuntos ordenados. Para que os dados sejam mais facilmente manipulados, é necessário que estes utilizem algum critério de ordenação. Seria impossível achar o número de telefone de alguém se a lista telefônica estivesse desordenada. Ordenar significa rearranjar um conjunto de objetos em uma ordem ascendente ou descendente. O objetivo principal da ordenação é facilitar a recuperação posterior de itens do conjunto ordenado. Existem vários algoritmos que permitem a realização da ordenação dos dados. O objetivo deste artigo é estudar alguns destes algoritmos e analisar a complexidade dos mesmos. 1 Lúcia Helena de Magalhães, Mestre em Sistemas Computacionais Computação de Auto-Desempenho pela Universidade Federal do Rio de Janeiro, Pós Graduada em Desenvolvimento de Aplicações para Web pelo Centro de Ensino Superior, Pós Graduada em Matemática e Estatística pela Universidade Federal de Lavras e Professora do Curso de Sistemas de Informação da Faculdade de Ciências Gerenciais de Santos Dumont, professora da Faculdade do Sudeste Mineiro e professora do Curso de Desenvolvimento Web das Faculdades Integradas do Instituto Vianna Júnior. lmagalhaes@viannajr.edu.br 2 Mônica de Lourdes Souza Batista, Mestranda em Computação Visual pela Universidade Federal Fluminense, Bacharel em Sistemas de Informação pela Faculdade Metodista Granbery. Programadora responsável pela Internet do Instituto Vianna Júnior. monicasouzabatista@gmail.com 3 Teresinha Moreira de Magalhães, Doutoranda em Sistemas Computacionais Computação de Auto- Desempenho pela Universidade Federal do Rio de Janeiro, Mestre em Engenharia de Produção pela Universidade Federal de Santa Catarina, Pós Graduada em Redes de Computadores pelo Centro de Ensino Superior de Juiz de Fora e Pós Graduada em Matemática e Estatística pela Universidade Federal de Lavras. Professora do Curso de Desenvolvimento Web das Faculdades Integradas Vianna Júnior, coordenadora do Ensino a distância e departamento de Informática da FIVJ. tmagalhaes@viannajr.edu.br 4 Thiago José de Souza Batista, Bacharelando em Sistemas de Informação pela Faculdade Metodista Granbery. shogumjf@gmail.com
2 Este trabalho é subdividido em introdução, desenvolvimento com as sessões de 2 a 5 e a conclusão. Na seção 2 é apresentado o BubleSort; na seção 3, o SelectSort; na seção 4, o MergeSort; e na seção 5 é mostrado o QuickSort. Por fim, são destacadas as considerações finais do trabalho e as referências bibliográficas utilizadas. Para cada algoritmo foi realizado um estudo da complexidade do mesmo. 2. BubleSort O BubleSort é um método de ordenação por troca. Ele é o mais simples, embora não muito eficaz. O princípio deste método consiste em varrer a lista várias vezes e trocar cada elemento corrente (posição i) com o posterior (posição i + 1), caso Ci > C i + 1, onde C e Ci+1 são respectivamente as chaves dos registros (DROZDEK, 2002). O melhor caso ocorre quando todos os elementos do vetor já estão ordenados. O pior caso acontece quando o vetor se encontra inversamente ordenado. Para qualquer caso a complexidade é O(n 2 ) (KNUTH, 1998). O Programa 1 mostra o código fonte do BubleSort. Algoritmo escrito na Linguagem C. #include <stdio.h> #include <stdlib.h> #include <conio.h> #include<iostream> using namespace std; #define TAMANHO_DO_ARRAY 5 int i, j, aux, pass; bool trocou; int v[tamanho_do_array]; main() printf("informe no maximo %d numeros\n", TAMANHO_DO_ARRAY); for (i = 0; i < TAMANHO_DO_ARRAY; i++) printf("informe um numero inteiro positivo para a %d posicao: ", i+1); scanf("%d",&v[i]); for (pass = 0; pass < TAMANHO_DO_ARRAY - 1; pass++) trocou = false; for (j = 0; j < TAMANHO_DO_ARRAY - (pass + 1) ; j++) if (v[j] > v[j+1]) aux = v[j]; v[j] = v[j+1]; v[j+1] = aux;
3 trocou = true; printf("os numeros ordenados sao: "); printf("\n"); for (i = 0; i < TAMANHO_DO_ARRAY; i++) printf("%d\n",v[i]); getch(); Programa 1: Código fonte do BubleSort 3. SelectSort O princípio básico do SelectSort consiste em se escolher o menor valor da chave de um vetor e trocar este com o primeiro registro da sequência. O processo é repetido trocando-se o menor valor da chave dos n-1 registros (desconta-se o primeiro) com o segundo registro, troca-se o menor valor da chave dos n-2 registro (desconta-se o primeiro e o segundo registros) com o terceiro registro e assim sucessivamente. O código do SelectSort é descrito abaixo (ZIVIANI, 1999). O Programa 2 ilustra o código fonte do SelectSort. #include <stdio.h> #include <stdlib.h> #include <conio.h> #include<iostream> using namespace std; #define TAMANHO_DO_ARRAY 5 int i, j, aux, minimo; int v[tamanho_do_array]; main() printf("informe no maximo %d numeros\n", TAMANHO_DO_ARRAY); //o usuario entra com os dados for (i = 0; i < TAMANHO_DO_ARRAY; i++) printf("informe um numero inteiro positivo para a %d posicao: ", i + 1); scanf("%d",&v[i]); //fim o usuario entra com os dados //select sort for (i = 0; i < TAMANHO_DO_ARRAY - 1; i++) minimo = i; for (j = i + 1; j < TAMANHO_DO_ARRAY ; j++) if (v[j] < v[minimo])
4 minimo = j; aux = v[minimo]; v[minimo] = v[i]; v[i] = aux; //fim select sort printf("os numeros ordenados sao: \n"); for (i = 0; i < TAMANHO_DO_ARRAY; i++) printf("%d\n",v[i]); getch(); Programa 2: Código fonte do SelectSort A análise da complexidade deste algoritmo é a seguinte: 1ª iteração: compara o 1º elemento com os n-1 demais: n-1 comparações. 2ª iteração: compara o 2º elemento com os n-2 demais: n-2 comparações. 3ª iteração: compara o 3º elemento com os n-3 demais: n-3 comparações. Número total de comparações C(n): (n-1) + (n-2) = (n2 - n)/2 = O(n2) Portanto, a complexidade desse algoritmo no pior caso, no caso médio e no melhor caso é a mesma: O(n²). 4. MergeSort O algoritmo MergeSort consiste em sortear n listas de tamanho 1. Estas listas são intercaladas, utilizando-se o procedimento Merge, em n/2 pares de listas, cada qual com tamanho 2 (se n é impar, então existirá uma lista com tamanho 1). Estas n/2 listas são intercaladas por pares gerando-se no final, como resultado, uma lista. De forma recursiva a lista é dividida em n/4 listas são intercaladas por pares gerando-se no final, como resultado, uma nova lista e assim por diante até se ter somente uma lista que está ordenada (KNUTH, 1998). O processo chave no MergeSort é fundir metades ordenadas de uma lista em uma lista ordenada. No entanto, essas metades precisam ser ordenadas primeiro, o que é realizado fundindo as metades já ordenadas dessas metades. Esse processo de dividir listas em duas metades pára quando a lista tem menos de dois elementos (DROZDEK, 2002). O algoritmo do MergeSort é ilustrado no seguinte código: #include <stdio.h> #include <stdlib.h>
5 #include <conio.h> #define TAMANHO_DO_ARRAY 5 int i, j, meio, k, inicio, fim; int a[tamanho_do_array]; int b[tamanho_do_array]; int mergesort(int e, int d); int merge(int e, int m, int d); int mergesort(int e, int d) if (e < d) meio = (e + d)/2; mergesort(e, meio); mergesort(meio + 1, d); merge(e, meio, d); int merge(int e, int m, int d) i = e; j = m + 1; k = e; while ((i<=m) && (j<=d)) if (a[i] < a[j]) b[k] = a[i]; k++; i++; else b[k] = a[j]; k++; j++; while (i <= m) b[k] = a[i]; k++; i++; while (j <= d) b[k] = a[j]; k++; j++; for (i = 0; i <= d; i++) a[i] = b[i];
6 int main(int argc, char *argv[]) printf("informe no maximo %d numeros\n", TAMANHO_DO_ARRAY); inicio = 0; fim = TAMANHO_DO_ARRAY - 1 ; //o usuario entra com os dados for (i = 0; i <= fim; i++) printf("informe um numero inteiro positivo para a %d posicao: ", i + 1); scanf("%d",&a[i]); //fim o usuario entra com os dados mergesort(inicio, fim); printf("os numeros ordenados sao: \n"); for (i = 0; i <= fim; i++) printf("%d\n", a[i]); getch(); Programa 3: Código fonte do MergeSort Segundo Drozdek (2002), o pior caso é quando o último elemento de uma metade precede somente o último elemento da outra metade, como por exemplo, [1,6,10,12] e [5,9,11,13]. Para uma lista de n elementos, o número de movimentos é calculado pela seguinte relação de recorrência: M(1) = 0 M(n) = 2M(n/2) + 2n M(n) pode ser calculado do seguinte modo: M(n) = 2(2M(n/4) + 2(2/n)) + 2n = 4M(n/4) + 4n = 4(2M(n/8) + 2(n/4) + 4n) = 8M(n/8) + 6n... = 2iM(n/2i) + 2in Escolher i = logn, de modo que n = 2i permite inferir que: M(n) = 2iM(n/2i) + 2in = nm(1) + 2nlogn = 2nlogn = O(nlogn). O número de comparações, no pior caso, é dado por uma relação similar:
7 C(1) = 0 C(n) = 2C(n/2) + n-1 Que também resulta em C(n), sendo O(nlogn). 5. QuickSort Este método é o mais eficaz de ordenação baseado em troca. O conceito básico deste algoritmo consiste em se dividir o conjunto original em dois subconjuntos separados por um elemento escolhido arbitrariamente, denominado de pivô. Para cada partição, escolhe-se o primeiro elemento da lista esquerda cuja chave seja maior que a chave do pivô, e escolhe-se o primeiro elemento da lista direita cuja chave seja menor que a chave do pivô. Os dois elementos são trocados. Este processo é repetido enquanto existir registros para serem trocados. Os subconjuntos são ordenados separadamente utilizando de forma recursiva o mesmo procedimento descrito anteriormente. Isto é, para cada subconjunto, escolhe-se arbitrariamente um elemento e, em seguida, ordena-se os dois conjuntos separadamente (ZIVIANI, 1999). O custo para percorrer o vetor comparando-se cada elemento com o pivô, é linear, ou seja, O(n). 5.1 Análise da escolha do pivô QuickSort ou Ordenação Rápida, é um método eficaz de ordenação baseado em troca. Para se resolver o problema da ordenação, a lista original é dividida em duas sublistas. A primeira contém elementos menores ou iguais a uma chave escolhida chamada de limite ou pivô. A segunda lista inclui elementos iguais ou menores que o pivô (ZIVIANI, 1999). As duas sublistas são ordenadas separadamente, mas, antes que isso seja feito, o processo de partição é repetido para ambas as sublistas. Como resultado, dois novos pivôs são escolhidos, um para cada sublista. Este processo de particionar é realizado até que haja somente listas de uma célula que precisem ser ordenadas. Dividir a tarefa de ordenar uma grande lista em duas tarefas mais simples e então dividir essas tarefas em tarefas ainda mais simples resulta em dados já ordenados, no processo de se preparar para ordenar (ZIVIANI, 1999). Para particionar uma lista, duas operações tem que ser realizadas: um pivô deve ser encontrado e a lista precisa ser varrida para colocar os elementos nas sublistas apropriadas. No entanto, escolher um bom pivô não é uma tarefa trivial. O ideal é que as sublistas devem ser aproximadamente do mesmo comprimento. Se uma matriz contém os números de 1 até 100 e 2 é escolhido como um limite, tem-se um desbalanceamento: a primeira sublista contém somente
8 um número depois do particionamento, enquanto a segunda tem 99 números (DROZDEK, 2002). Várias estratégias diferentes para selecionar um pivô foram desenvolvidas. Uma das mais simples consiste em escolher o primeiro elemento da lista. Essa abordagem pode ser suficiente para algumas aplicações. No entanto, como muitas listas a serem ordenadas já têm muitos elementos em suas próprias posições, uma abordagem mais cuidadosa é escolher o elemento alocado no meio da lista. Outra tarefa é varrer a matriz e dividir os elementos entre suas duas sublistas. O algoritmo que realiza esta tarefa não decide onde colocar um elemento igual ao pivô; ele somente diz que os elementos são colocados na primeira sublista caso sejam menores ou iguais ao pivô, e na segunda, caso sejam maiores ou iguais ao pivô. A razão é que a diferença entre os comprimentos das duas sublistas deve ser mínimo. Em conseqüência, os elementos iguais ao pivô devem ser divididos igualmente entre as duas submatrizes, para tornar essa diferença de tamanho mínima (DROZDEK, 2002). Existem vários métodos para se encontrar o pivô. Um método gera aleatoriamente um número entre o início e o final da lista. Esse número é utilizado como índice do pivô. Um outro método escolhe uma mediana dos três elementos da lista, dentre eles, o primeiro, o médio e o último (DROZDEK, 2002). 5.2 Complexidade do QuickSort Análise do Pior caso O Pior Caso ocorre quando o algoritmo de particionamento produz a cada chamada um subproblema de tamanho n-1 e outro de tamanho 1. Nesse contexto pode-se extrair a seguinte relação de recorrência: T(1) = O(1) T(n) = T(n-1) + O(n) Resolvendo esta relação de recorrência, acha-se a complexidade do QuickSort no pior caso, ou seja, O(n 2 ) Análise do Melhor Caso O Melhor Caso ocorre quando o particionamento divide o vetor a cada chamada em dois subproblemas de tamanhos aproximadamente iguais a n/2, que produz a seguinte relação de recorrência: T(1) = O(1)
9 T(n) = 2T(n/2) + O(n) Resolvendo esta relação de recorrência, acha-se a complexidade do QuickSort no melhor caso, ou seja, O(nlogn) Análise do Caso Médio Considere o código a seguir: void quicksort(v,a,b) if a>=b return else m = split(v,a,b) quicksort(v,a,m-1) quicksort(v,m+1,b) O efeito da execução de m=split(v,a,b) á alterar o vetor v[], definindo um índice m tal que todos os elementos da seção do vetor v[a..m-1] são menores ou iguais a v[m] e todos os elementos da seção do vetor v[m+1..b] são maiores que v[m]. Seja n = b - a + 1 o número de elementos a ordenar. Na execução de m=split(v,a,b) há n - 1 comparações envolvendo elementos do vetor. Pretende-se mostrar que o número de comparações c(n) é de ordem O(nlogn); mais precisamente que é sempre c(n) knlogn para uma constante k apropriada. Admite-se que os elementos do vetor são todos distintos e que todas as n! permutações de elementos são igualmente prováveis. Assim, o valor de m dado por m=split(v,a,b) tem a mesma probabilidade se ser a, de ser a + 1,... e de ser b; essa probabilidade é 1/n (relembra-se que n = b - a + 1). Abaixo tem-se recorrência que determina o valor médio do número de comparações:
10 É possível notar que para cada i 2 1, 2,..., n o valor c(i) ocorre 2 vezes na soma anterior; pode-se então escrever a recorrência da forma seguinte: Pré-teorema: A solução c(n) da recorrência é majorada por knlogn em que o valor de k é encontrado na demonstração. Caso base, n = 1: tem-se (da recorrência) c(1) = 0 k(1log1) para qualquer k > 0; analogamente se trata o caso n = 0. Passo de indução: supor que c(i) kilogi para todo o i com 0 i n-1. Abaixo é possível visualizar que c(n) k(n log n). onde α = 2k(-2 ln 2 + 1)/n tem valor negativo. O teorema fica então demonstrado se for n - 1 kn/2, pois fica então k(nlogn). Em particular podemos tomar k = 2 e enunciar a versão final do pré-teorema anterior. Conclui-se que o número de comparações efetuadas pelo quicksort é, no caso médio, majorado por 2nlogn. O Programa 4 mostra o código do QuickSort: #include <stdio.h> #include <stdlib.h> #define TAMANHO_DO_ARRAY 20
11 int partition(int e, int d); void quicksort(int e, int d); int a[tamanho_do_array]; void quicksort(int e, int d) int i; if (e < d) i = partition(e,d); quicksort(e, i - 1); quicksort(i + 1, d); int partition(int e, int d) int v, i, j, aux; v = a[d];//pivo -> pode ser qquer valor i = e - 1; j = d; do do i++; while ((a[i] < v) && (i < d)); do j--; while ((a[j] > v) && (j > 0)); aux = a[i]; a[i] = a[j]; a[j] = aux; while (j > i); a[j] = a[i]; a[i] = a[d]; a[d] = aux; return i; int main(int argc, char *argv[]) int i, pare; pare = a[0] = 0; printf("informe no maximo %d numeros\n", TAMANHO_DO_ARRAY); for (i = 1; i < TAMANHO_DO_ARRAY; i++)
12 if (!pare) printf("informe um numero inteiro positivo para a %d posicao: ", i); scanf("%d",&a[i]); else if (a[i] < 1) pare = 1; else a[0]++; a[i] = -1; quicksort(1, a[0]); printf("os numeros ordenados sao: \n"); if (a[0] > 0) else for (i = 1; i <= a[0]; i++) printf("%d ", a[i]); printf("\n"); printf("nenhum numero informado!\n"); Programa 4: Código fonte do QuickSort 6. Considerações finais Um problema fundamental da ciência da computação está na ordenação de uma lista de itens. Existem muitos algoritmos de ordenação para resolver este problema. Alguns algoritmos são simples e intuitivos, como por exemplo o BubleSort. Outros são extremamente complicados, como por exemplo o QuickSort. Esse artigo abordou diferentes algoritmos de ordenação de itens, além de estudar a complexidade de cada um deles. É importante lembrar que existem outros, tais como InsertionSort, HeapSort, ShellSort, RadixSort, etc. 6. Referências biliográficas DROZDEK, A. Estrutura de Dados e Algoritmos em C++. São Paulo: Pioneira Thomson Learning, 2002
13 KNUTH, D. Section 5.2.4: Sorting by Merging, The Art of Computer Programming. Addison-Wesley, Pag São Paulo: ZIVIANI, N. Projeto de Algoritmos com Implementação em Pascal e C. 4ª Ed. São Paulo: Pioneira, 1999
Algoritmos de Busca em Tabelas
Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas estão entre os mais usados. Considere por exemplo um sistema de banco de dados. As operações de busca e recuperação dos dados
Leia maisALGORITMOS DE ORDENAÇÃO. Algoritmos de comparação-e-troca. Bubble Sort Merge Sort Quick Sort
ALGORITMOS DE ORDENAÇÃO ALGORITMOS DE ORDENAÇÃO Algoritmos de comparação-e-troca Bubble Sort Merge Sort Quick Sort 1 BUBBLE SORT Usa a estratégia de comparação-e-troca É constituído por várias fases Cada
Leia maisSistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos
Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática
Leia maisAlgoritmos de Pesquisa e Ordenação em Vectores
Algoritmos de Pesquisa e Ordenação em Vectores FEUP - MIEEC Programação 2-2008/2009 Pesquisa Sequencial Problema (pesquisa de valor em vector): Verificar se um valor existe no vector e, no caso de existir,
Leia maisFACULDADE DE IMPERATRIZ - FACIMP BACHARELADO EM SISTEMAS DE INFORMAÇÃO ESTRUTURA DE DADOS 2. Vieira Lima Junior. Everson Santos Araujo
1 FACULDADE DE IMPERATRIZ - FACIMP BACHARELADO EM SISTEMAS DE INFORMAÇÃO ESTRUTURA DE DADOS 2 Vieira Lima Junior Everson Santos Araujo ALGORITMOS DE ORDENAÇÃO: estudo comparativo de diversos algoritmos
Leia maisBCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes
Leia maisEstrutura de Dados Básica
Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 7: Recursividade O objetivo desta aula é apresentar o conceito de recursão para solução de problemas. A recursão é uma técnica de programação
Leia maisBUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES
BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES ALGORITMOS DE BUSCA EM LISTAS COM ALOCAÇÃO SEQÜENCIAL Busca em Listas Lineares A operação de busca é
Leia maisVetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos
Vetores Nos capítulos anteriores estudamos as opções disponíveis na linguagem C para representar: Números inteiros em diversos intervalos. Números fracionários com várias alternativas de precisão e magnitude.
Leia maisBusca. Pesquisa sequencial
Busca Banco de dados existem para que, de tempos em tempos, um usuário possa localizar o dado de um registro, simplesmente digitando sua chave. Uma tabela ou um arquivo é um grupo de elementos, cada um
Leia maisFigura 1 Busca Linear
----- Evidentemente, possuir os dados não ajuda o programador ou o usuário se eles não souberem onde os dados estão. Imagine, por exemplo, uma festa de casamento com cem convidados na qual não se sabe
Leia maisEFICIÊNCIA DE ALGORITMOS E
AULA 2 EFICIÊNCIA DE ALGORITMOS E PROGRAMAS Medir a eficiência de um algoritmo ou programa significa tentar predizer os recursos necessários para seu funcionamento. O recurso que temos mais interesse neste
Leia maisDadas a base e a altura de um triangulo, determinar sua área.
Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares
Leia maisMétodos de Pesquisa em Memória Primária
Algoritmos e Estrutura de Dados II Métodos de Pesquisa em Memória Primária Prof Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Pesquisa Por pesquisa (procura ou busca) entende-se o ato
Leia maisAnálise de Algoritmos: Melhor caso, pior caso, caso médio
Análise de Algoritmos: Melhor caso, pior caso, caso médio Fernando Lobo Algoritmos e Estrutura de Dados II 1 / 25 Sumário Rever um problema e um algoritmo que já conhecem. Descrevê-lo em pseudo-código
Leia maisExercícios Teóricos Resolvidos
Universidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Matemática Exercícios Teóricos Resolvidos O propósito deste texto é tentar mostrar aos alunos várias maneiras de raciocinar
Leia maisÁrvores Binárias - continuação
Tópicos Avançados em Estrutura de Dados 6º Período Ciência da Computação Uma Aplicação de Árvores Binárias Árvores Binárias - continuação As árvore binárias são estruturas importantes toda vez que uma
Leia maisNa disciplina de Cálculo Numérico, vamos trabalhar com a linguagem C++ e o compilador que vamos usar é o Dev C++.
Data: 14/8 Página 1 de 9 Primeiros passos Introdução Na disciplina de Cálculo Numérico, vamos trabalhar com a linguagem C++ e o compilador que vamos usar é o Dev C++. No tutorial anterior, mostramos como
Leia maisO ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2
3.2 O Espaço Nulo de A: Resolvendo Ax = 0 11 O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2 Esta seção trata do espaço de soluções para Ax = 0. A matriz A pode ser quadrada ou retangular. Uma solução imediata
Leia mais1 se n = 0 n (n 1)! se n 1
Recursão versus Iteração Problema: Cálculo de n! = n (n 1)... 1 int facti(int n) { int fac=n; while(n>0){ fac=fac*n; n--; } return fac; } [epd94, Cap. 5.13-15] Definição recursiva: n! = { 1 se n = 0 n
Leia maisPONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas CMP1132 Processo e qualidade de software II Prof. Me. Elias Ferreira Sala: 402 E Quarta-Feira:
Leia maisProgramação Recursiva versão 1.02
Programação Recursiva versão 1.0 4 de Maio de 009 Este guião deve ser entregue, no mooshak e no moodle, até às 3h55 de 4 de Maio. AVISO: O mooshak é um sistema de avaliação e não deve ser utilizado como
Leia maisComandos Sequenciais if else, e Switch
Introdução à Programação Comandos Sequenciais if else, e Switch 1º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv) O computador pensa? Muitas vezes utiliza-se a
Leia maisAlgoritmos e Estrutura de Dados III. Árvores
Algoritmos e Estrutura de Dados III Árvores Uma das mais importantes classes de estruturas de dados em computação são as árvores. Aproveitando-se de sua organização hierárquica, muitas aplicações são realizadas
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 maisExperimentos com a memória cache do CPU
Experimentos com a memória cache do CPU Alberto Bueno Júnior & Andre Henrique Serafim Casimiro Setembro de 2010 1 Contents 1 Introdução 3 2 Desvendando o cache 3 2.1 Para que serve o cache?.....................
Leia mais17 - Funções e Procedimentos em C Programação Modular
17 - Funções e Procedimentos em C Programação Modular Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante 17
Leia maisUNIVERSIDADE FEDERAL DE SANTA MARIA
1 UNIVERSIDADE FEDERAL DE SANTA MARIA Disciplina de Algoritmos e Programação Profa: Juliana Kaizer Vizzotto Lista de Exercícios Vetores Para a implementação de programas que solucionem os problemas a seguir
Leia maisEstruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos
Estruturas de Dados Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos Árvores Conceitos Árvores binárias Árvores binárias de pesquisa Árvores binárias balanceadas Árvores ESTRUTURAS
Leia maisESTRUTURAS DE DADOS AVANÇADAS (INF 1010) (a) Seja um TAD definido por uma lista circular implementada em um vetor.
PUC-Rio Departamento de Informática Período: 2015.1 Horário: 2as-feiras e 4as-feiras de 17-19 30 de março de 2015 ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) 1 a Lista de Exercícios 1. Lista (a) Seja um TAD
Leia maisSolução da prova da 1 a fase OBMEP 2008 Nível 1
OBMEP 00 Nível 1 1 QUESTÃO 1 Como Leonardo da Vinci nasceu 91 anos antes de Pedro Américo, ele nasceu no ano 14 91 = 145. Por outro lado, Portinari nasceu 451 anos depois de Leonardo da Vinci, ou seja,
Leia maisAlgoritmos e Programação Estruturada
Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.
Leia maisO Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48
Conteúdo 1 Princípios de Contagem e Enumeração Computacional Permutações com Repetições Combinações com Repetições O Problema do Troco Principio da Casa dos Pombos > Princípios de Contagem e Enumeração
Leia maisIntrodução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza
Introdução Manipulação de arquivos em C Estrutura de Dados II Prof Jairo Francisco de Souza Manipulação de Arquivo em C Existem dois tipos possíveis de acesso a arquivos na linguagem C : sequencial (lendo
Leia maisa 1 x 1 +... + a n x n = b,
Sistemas Lineares Equações Lineares Vários problemas nas áreas científica, tecnológica e econômica são modelados por sistemas de equações lineares e requerem a solução destes no menor tempo possível Definição
Leia maisINF 1005 Programação I
INF 1005 Programação I Aula 12 Cadeia de Caracteres (Strings) Edirlei Soares de Lima Caracteres Até o momento nós somente utilizamos variáveis que armazenam números (int, float ou
Leia maisAnálises Geração RI (representação intermediária) Código Intermediário
Front-end Análises Geração RI (representação intermediária) Código Intermediário Back-End Geração de código de máquina Sistema Operacional? Conjunto de Instruções do processador? Ambiente de Execução O
Leia maisSoluções Nível 1 5 a e 6 a séries (6º e 7º anos) do Ensino Fundamental
a e 6 a séries (6º e 7º anos) do Ensino Fundamental 1. (alternativa C) Os números 0,01 e 0,119 são menores que 0,12. Por outro lado, 0,1 e 0,7 são maiores que 0,. Finalmente, 0,29 é maior que 0,12 e menor
Leia maisQUESTÃO 1 ALTERNATIVA B
1 QUESTÃO 1 Marcos tem 10 0,25 = 2,50 reais em moedas de 25 centavos. Logo ele tem 4,30 2,50 = 1,80 reais em moedas de 10 centavos, ou seja, ele tem 1,80 0,10 = 18 moedas de 10 centavos. Outra maneira
Leia maisQuão rápido podemos ordenar? Aula07-LimiteInferiorpara Ordenação. Quão rápido podemos ordenar? Árvore de Decisão- Exemplo. Ordenação em Tempo Linear
Quão rápido podemos ordenar? Aula07-LimiteInferiorpara Ordenação Ordenação em Tempo Linear Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Um algoritmo baseado em comparação para
Leia maisSistemas Operacionais e Introdução à Programação. Programação com linguagem C
Sistemas Operacionais e Introdução à Programação Programação com linguagem C 1 Variáveis na linguagem C: tipo char O tipo char representa um caractere ASCII (ocupa só 1 byte) int main(int argc, char **
Leia maisALGORITMOS E ESTRUTURAS DE DADOS Terceiro Trabalho Prático Recursividade e Pilhas
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Departamento de Computação ALGORITMOS E ESTRUTURAS DE DADOS Terceiro Trabalho Prático Recursividade e Pilhas Luiz Henrique Santos
Leia maisx0 = 1 x n = 3x n 1 x k x k 1 Quantas são as sequências com n letras, cada uma igual a a, b ou c, de modo que não há duas letras a seguidas?
Recorrências Muitas vezes não é possível resolver problemas de contagem diretamente combinando os princípios aditivo e multiplicativo. Para resolver esses problemas recorremos a outros recursos: as recursões
Leia mais- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação
Programação 1I Prof. Osório Árvores Binárias Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação II Disciplina: Linguagem
Leia maisPROGRAMAÇÃO ESTRUTURADA. CC 2º Período
PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 07: Funções O comando return Protótipo de funções O tipo void Arquivos-cabeçalho Escopo de variáveis Passagem de parâmetros por valor
Leia mais2ª Lista de Exercícios
Universidade Federal de Minas Gerais Departamento de Ciência da Computação Algoritmos e Estruturas de Dados II (Turmas M, N, W, F) 1º Semestre de 2012 Profs. Camilo Oliveira, Gisele Pappa, Ítalo Cunha,
Leia maisEstruturas de Repetição
Estruturas de Repetição Introdução No capítulo anterior verificamos que a execução seqüencial dos comandos da função main nos limita a programação de algoritmos muito simples. Passamos, então, a dedicar
Leia maisAV2 - MA 12-2012. (a) De quantos modos diferentes posso empilhá-los de modo que todos os CDs de rock fiquem juntos?
Questão 1. Num porta-cds, cabem 10 CDs colocados um sobre o outro, formando uma pilha vertical. Tenho 3 CDs de MPB, 5 de rock e 2 de música clássica. (a) De quantos modos diferentes posso empilhá-los de
Leia maisTipos de Dados, Tipos Abstratos de Dados Estruturas de Dados
Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados Tipo de dados, tipo abstrato de dados, estruturas de dados Termos parecidos, mas com significados diferentes Tipo de dado Em linguagens de programação
Leia mais428 Capítulo 7 Arrays. do { ExibeArrayInts(ar, n); /* Exibe a configuração */ /* corrente do array */ } while (ProximaPermutacao(ar, n));
428 Capítulo 7 Arrays do { ExibeArrayInts(ar, n); / Exibe a configuração / / corrente do array / while (ProximaPermutacao(ar, n)); Análise: Inicialmente, a função GeraPermutacoes() chama a função BubbleSort(),
Leia maisMétodos de Pesquisa 472
472 Métodos de Pesquisa 473 Objetivos e Caracterizações Para que se possa falar em algoritmos de pesquisa, é necessário inicialmente introduzir a noção de mapeamento que é uma das mais primitivas em programação.
Leia maisProf. Paulo Henrique Raciocínio Lógico
Prof. Paulo Henrique Raciocínio Lógico Comentário da prova de Agente Penitenciário Federal Funrio 01. Uma professora formou grupos de 2 e 3 alunos com o objetivo de conscientizar a população local sobre
Leia maisPor que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,...
Por que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,... 0) O que veremos na aula de hoje? Um fato interessante Produtos notáveis Equação do 2º grau Como fazer a questão 5 da 3ª
Leia maisPesquisa Sequencial e Binária. Introdução à Programação SI2
Pesquisa Sequencial e Binária Introdução à Programação SI2 3 Contexto Diferentes estratégias para pesquisa (busca) de um elemento específico em um conjunto de dados. Lista, array, coleção Operação importante,
Leia mais2. Representação Numérica
2. Representação Numérica 2.1 Introdução A fim se realizarmos de maneira prática qualquer operação com números, nós precisamos representa-los em uma determinada base numérica. O que isso significa? Vamos
Leia maisAplicações de Combinatória e Geometria na Teoria dos Números
Aplicações de Combinatória e Geometria na Teoria dos Números Nesse artigo vamos discutir algumas abordagens diferentes na Teoria dos Números, no sentido de envolverem também outras grandes áreas, como
Leia maisJosé Romildo Malaquias 2011-1
Programação de Computadores I Aula 08 Programação: Estruturas de Repetição José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/58 Motivação Como imprimir os três
Leia maisEstruturas de Repetição
Estruturas de Repetição Lista de Exercícios - 04 Linguagem e Técnicas de Programação Professor: Edwar Saliba Júnior Estruturas de Repetição O que são e para que servem? São comandos que são utilizados
Leia maisProgramação: Estruturas de seleção
Programação de Computadores I Aula 07 Programação: Estruturas de seleção José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/53 Valores booleanos Os valores booleanos
Leia maisLinguagem C: Árvores Binarias
Instituto de C Linguagem C: Árvores Binarias Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Tópicos Principais Introdução Árvores binárias Implementação
Leia maisAula 03 Limite assintótico para a ordenação, Ordenação em tempo linear
MC3305 Algoritmos e Estruturas de Dados II Aula 03 Limite assintótico para a ordenação, Ordenação em tempo linear Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 2Q-2015 1 2 Ordenação Ordenar corresponde
Leia maisstruct LISTA item quant
UNIVERSIDADE SÃO JUDAS TADEU ESTRUTURA DE DADOS - PROF. H. Senger IMPLEMENTAÇÃO DE LISTAS COM VETORES A implementação de listas utilizando vetores é simples. Existe apenas uma pequena questão, com relação
Leia maisTutorial de Matlab Francesco Franco
Tutorial de Matlab Francesco Franco Matlab é um pacote de software que facilita a inserção de matrizes e vetores, além de facilitar a manipulação deles. A interface segue uma linguagem que é projetada
Leia maisCAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:
Leia maisTabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Leia mais20 Caracteres - Tipo char
0 Caracteres - Tipo char Ronaldo F. Hashimoto e Carlos H. Morimoto Até agora vimos como o computador pode ser utilizado para processar informação que pode ser quantificada de forma numérica. No entanto,
Leia maisEste material traz a teoria necessária à resolução das questões propostas.
Inclui Teoria e Questões Inteiramente Resolvidas dos assuntos: Contagem: princípio aditivo e multiplicativo. Arranjo. Permutação. Combinação simples e com repetição. Lógica sentencial, de primeira ordem
Leia maisSomatórias e produtórias
Capítulo 8 Somatórias e produtórias 8. Introdução Muitas quantidades importantes em matemática são definidas como a soma de uma quantidade variável de parcelas também variáveis, por exemplo a soma + +
Leia maisPesquisa em Memória Primária. Prof. Jonas Potros
Pesquisa em Memória Primária Prof. Jonas Potros Pesquisa em Memoria Primária Estudo de como recuperar informação a partir de uma grande massa de informação previamente armazenada. A informação é dividida
Leia maisÁrvore Binária de Busca
Árvore Binária de Busca 319 Árvore Binária de Busca! construída de tal forma que, para cada nó:! nós com chaves menores estão na sub-árvore esquerda! nós com chaves maiores (ou iguais) estão na subárvore
Leia maisUniversidade Federal de Mato Grosso do Sul Faculdade de Computação Disciplina de Verão: Algoritmos e Programação II
Universidade Federal de Mato Grosso do Sul Faculdade de Computação Disciplina de Verão: Algoritmos e Programação II Professores: Liana Duenha 10 de março de 2014 Professores: Liana Duenha () Universidade
Leia maisCapítulo 2: Introdução à Linguagem C
Capítulo 2: Introdução à Linguagem C INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso
Leia maisLei de Gauss Origem: Wikipédia, a enciclopédia livre.
Lei de Gauss Origem: Wikipédia, a enciclopédia livre. A lei de Gauss é a lei que estabelece a relação entre o fluxo de campo elétrico que passa através de uma superfície fechada com a carga elétrica que
Leia maisPodemos encontrar uma figura interessante no PMBOK (Capítulo 7) sobre a necessidade de organizarmos o fluxo de caixa em um projeto.
Discussão sobre Nivelamento Baseado em Fluxo de Caixa. Item aberto na lista E-Plan Podemos encontrar uma figura interessante no PMBOK (Capítulo 7) sobre a necessidade de organizarmos o fluxo de caixa em
Leia maisPesquisa em Memória Primária. Algoritmos e Estruturas de Dados II
Pesquisa em Memória Primária Algoritmos e Estruturas de Dados II Pesquisa em Memória Primária Pesquisa: Recuperação de informação em um grande volume de dados Informação é dividida em registros e cada
Leia maisPesquisa Sequencial e Binária
Pesquisa Sequencial e Binária Prof. Wylliams Barbosa Santos wylliamss@gmail.com Introdução à Programação Crédito de Conteúdo: Professora Ceça Moraes Agenda Pesquisa Sequencial Noções de complexidade Pesquisa
Leia maisModule Introduction. Programação. Cap. 4 Algoritmos e Programação Estruturada
5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação 9099 : Bioengenharia 10135 : Ciências Biomédicas Cap. 4 Algoritmos e Estruturada Module Introduction Algoritmos e Estruturada Objectivos:
Leia mais6. Geometria, Primitivas e Transformações 3D
6. Geometria, Primitivas e Transformações 3D Até agora estudamos e implementamos um conjunto de ferramentas básicas que nos permitem modelar, ou representar objetos bi-dimensionais em um sistema também
Leia maisINF 1620 P1-10/04/02 Questão 1 Nome:
INF 1620 P1-10/04/02 Questão 1 Considere uma disciplina que adota o seguinte critério de aprovação: os alunos fazem duas provas (P1 e P2) iniciais; se a média nessas duas provas for maior ou igual a 5.0,
Leia maisProjeto e Análise de Algoritmos. Profa. Juliana Kaizer Vizzotto. Projeto e Análise de Algoritmos - Aula 1
Projeto e Análise de Algoritmos Profa. Juliana Kaizer Vizzotto Projeto e Análise de Algoritmos - Aula 1 Roteiro Introdução Exemplo: ordenação Introdução Análise de Algoritmos Estudo teórico da performance
Leia maisE A D - S I S T E M A S L I N E A R E S INTRODUÇÃO
E A D - S I S T E M A S L I N E A R E S INTRODUÇÃO Dizemos que uma equação é linear, ou de primeiro grau, em certa incógnita, se o maior expoente desta variável for igual a um. Ela será quadrática, ou
Leia maisAlgoritmos de Ordenação
CENTRO DE CIÊNCIAS EXATAS DEPARTAMENTO DE COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Algoritmos de Ordenação Alunos: André Ricardo Gonçalves Luiz Gustavo Andrade dos Santos Paulo Roberto Silla Profa. Linnyer Beatrys
Leia maisAV1 - MA 12-2012. (b) Se o comprador preferir efetuar o pagamento à vista, qual deverá ser o valor desse pagamento único? 1 1, 02 1 1 0, 788 1 0, 980
Questão 1. Uma venda imobiliária envolve o pagamento de 12 prestações mensais iguais a R$ 10.000,00, a primeira no ato da venda, acrescidas de uma parcela final de R$ 100.000,00, 12 meses após a venda.
Leia maisINTRODUÇÃO À LINGUAGEM C++
INTRODUÇÃO À LINGUAGEM C++ 1 - VARIÁVEIS Variáveis espaço de memória reservado para armazenar tipos de dados, com um nome para referenciar seu conteúdo. Observações importantes Todas as variáveis devem
Leia maisEsta apresentação ensinará os conceitos de Orientação a Objetos com C++, do mais básico para o mais avançado. É suposto que o aluno já tenha
Esta apresentação ensinará os conceitos de Orientação a Objetos com C++, do mais básico para o mais avançado. É suposto que o aluno já tenha conhecimento avançado de C. Exemplo em C: Faça um programa que
Leia mais5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS. 5.1 - Os Programas de Avaliação
36 5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS 5.1 - Os Programas de Avaliação Programas de avaliação convencionais foram utilizados para análise de diversas configurações da arquitetura. Estes programas
Leia maisBases Matemáticas. Aula 2 Métodos de Demonstração. Rodrigo Hausen. v. 2013-7-31 1/15
Bases Matemáticas Aula 2 Métodos de Demonstração Rodrigo Hausen v. 2013-7-31 1/15 Como o Conhecimento Matemático é Organizado Definições Definição: um enunciado que descreve o significado de um termo.
Leia maisÁrvores Binárias e Busca. Jeane Melo
Árvores Binárias e Busca Jeane Melo Roteiro Parte 1 Árvores Relação hierárquica Definição Formal Terminologia Caminhamento em Árvores Binárias Exemplos Parte 2 Busca seqüencial Busca Binária Grafos Conjunto
Leia maisCurso de Programação Computadores
3 O Primeiro Programa em C Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro 3 O Primeiro Programa em C 3.1 - Introdução Depois dos conceitos
Leia mais7 - Análise de redes Pesquisa Operacional CAPÍTULO 7 ANÁLISE DE REDES. 4 c. Figura 7.1 - Exemplo de um grafo linear.
CAPÍTULO 7 7 ANÁLISE DE REDES 7.1 Conceitos Básicos em Teoria dos Grafos Diversos problemas de programação linear, inclusive os problemas de transporte, podem ser modelados como problemas de fluxo de redes.
Leia maisPointer Jumping. odg(v) e idg(v): graus de saída e entrada do vértice v V. um vértice r tal que. O vértice r é dita raíz de T
Pointer Jumping T = (V,E) : árvore direcionada odg(v) e idg(v): graus de saída e entrada do vértice v V um vértice r tal que v V-{r}, odg(v) = 1, odg(r)=0 v V-{r}, um caminho de v a r O vértice r é dita
Leia maisOBSERVANDO AS DIFERENÇAS DE TEMPO NAS EXECUÇÕES DE ALGORITMOS EM PROCESSADORES DIFERENTES
OBSERVANDO AS DIFERENÇAS DE TEMPO NAS EXECUÇÕES DE ALGORITMOS EM PROCESSADORES DIFERENTES Noting the Time Differences in the Execution of Algorithms on Different Processors Walteno Martins Parreira Júnior,
Leia maisOrientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia maisProgramação de Computadores I Fluxogramas PROFESSORA CINTIA CAETANO
Programação de Computadores I Fluxogramas PROFESSORA CINTIA CAETANO Problemas & Algoritmos Para resolver um problema através dum computador é necessário encontrar em primeiro lugar uma maneira de descrevê-lo
Leia maisBusca em Memória. Secundária
UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Busca em Memória Secundária e Gomes da Costa yandre@din.uem.br 1 Busca de um item em uma massa de dados que não cabe na memória principal; Procura-se
Leia maisJorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.1. Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.
Agenda Análise e Técnicas de Algoritmos Introdução Informal Motivação Jorge Figueiredo Visão Geral do do Curso Introdução Informal O nosso curso é sobre técnicas e análise de de algoritmos (computacionais).
Leia maisRESUMO 2 - FÍSICA III
RESUMO 2 - FÍSICA III CAMPO ELÉTRICO Assim como a Terra tem um campo gravitacional, uma carga Q também tem um campo que pode influenciar as cargas de prova q nele colocadas. E usando esta analogia, podemos
Leia maisOBI2014 Caderno de Tarefas
OBI2014 Caderno de Tarefas Modalidade Universitária, Fase 2 16 de agosto de 2014 A PROVA TEM DURAÇÃO DE 5 HORAS Promoção: Patrocínio: Olimpíada Brasileira de Informática OBI2014 1 Instruções LEIA ATENTAMENTE
Leia mais