Especificação do trabalho T2

Tamanho: px
Começar a partir da página:

Download "Especificação do trabalho T2"

Transcrição

1 Especificação do trabalho T2 Conforme o plano de ensino, ao trabalho T2 será atribuída nota de acordo com as seguintes diretrizes e os critérios de avaliação abaixo: 1. Entrega de relatório O relatório do trabalho T2 deverá ser impresso e assinado pelos membros da equipe (no máximo 2 alunos) e entregue ao professor em aula expositiva ou de laboratório. Somente será atribuída nota aos alunos que assinarem o trabalho impresso. (Não serão aceitos trabalhos colocados em caixa de correspondência ou entregues fora do horário de aula). O último dia de entrega será 26/10/2007. Ao aluno que não entregar (ou não assinar) seu trabalho até essa data será atribuída nota zero. Os critérios de avaliação do relatório são os seguintes, onde o valor de cada item avaliado está entre parênteses: Forma (1,0): precisão técnica do texto, qualidade do documento impresso, separação em seções, uso correto de referências bibliográficas, de acordo com as melhores práticas de metolodogia científica, aderência às especificações do trabalho. Algoritmo em pseudo-código (1,0): o algoritmo deve ser escrito em pseudo-código procedural (sem orientação a objetos) e o mais independente possível de linguagem de programação. Para um exemplo de como escrever em pseudo-código, veja exemplos de algoritmos descritos em [1]. Será verificada a precisão formal da especificação do algoritmo. Cada linha do algoritmo deve ser numerada. Em seguida, deve constar uma descrição o algoritmo em linguagem natural, usando o número das linhas para explicar ao leitor como o algoritmo funciona através de uma visita guiada a cada linha do algoritmo. Código assembly (1,0): código em linguagem de montagem do MIPS R2000, podendo conter pseudo-instruções implementadas pelo SPIM. Cada linha do código assembly deve ser numerada e comentada. Mapeamento entre linhas do pseudo-código e linhas do código assembly (1,0): incluir uma tabela onde cada linha seja composta por um par (Lcódigo, Lalgoritmo), mostrando a correspondência entre cada linha do assembly e a respetiva linha do algoritmo. Conclusões (1,0): descreva os procedimentos experimentais (procedimentos de teste) adotados para verificar o correto funcionamento do código, e comente as otimizações realizadas no código e qual o seu impacto no desempenho e/ou no tamanho do código. 2. Demonstração em laboratório As datas das apresentações serão determinadas mediante sorteio. Apresentação (1,0): será premiada a didática da apresentação dos principais pontos do programa, desde a instrumentação para o procedimento de teste, passando pela execução, até a monitoração dos resultados. Todos os membros da equipe deverão estar preparados para fazer a apresentação. O professor escolherá na ocasião, qual aluno fará a apresentação. Arguição (2,0): serão feitas perguntas sobre o algoritmo e sobre o código, ou para esclarecer dúvidas do relatório. As perguntas serão feitas a quaisquer dos componentes da equipe. Execução correta (2,0): será verificada a correção do funcionamento, usando o procedimento de teste fornecido pelos autores, bem como outros procedimentos de teste solicitados pelo professor.

2 3. Estrutura e formato do relatório O relatório deve conter as seguintes seções: Capa (Título, identificação da disciplina, identificação da equipe) 1. Descrição do algoritmo (pseudo-código e sua descrição em linguagem natural) 2. Descrição do código em linguagem de montagem (código assembly e tabela de mapeamento algoritmo-código) 3. Conclusões 3.1 Descrição dos experimentos 3.2 Comentários sobre otimizações 4. Referências bibliográficas O texto deve ser formatado como segue: parágrafos descritivos em fonte Times New Roman 12, elementos do algoritmo e do código em Courier 12 (e.g. add $s1, $s2, $s3). Parágrafos alinhados ( justify ) à direita e à esquerda. O trabalho não deve exceder 6 páginas. 4. Temas Um tema diferente será atribuído a cada equipe. Os temas serão sorteados e o resultado informado por . Ao final deste documento está a lista de temas e uma especificação inicial em pseudo-código. As especificações aqui disponíveis muitas vezes não estão suficientemente formalizadas e servem apenas de referência para que os alunos reconheçam o algoritmo que implementarão. Favor consultar as referências disponibilizadas e a literatura especializada para melhorar a precisão do pseudo-código. Imagina-se que os alunos refinarão o pseudo-código aqui mostrado como referência, como parte de seu trabalho, em seus relatórios. Dúvidas remanescentes sobre a especificação do trabalho devem ser dirigidas a Alexandre Mendonça (mendonca@inf.ufsc.br), estagiário de docência da disciplina. Não é atribuição do estagiário de docência responder sobre dúvidas conceituais sobre os algoritmos em si ou sobre o código assembly, mas somente sobre a dúvidas quanto à especificação dos temas da lista abaixo. 5. Referência bibliográfica [1] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, ISBN (disponível na biblioteca universitária da UFSC).

3

4 1 - Ordenação pelo método Quick-Sort O Quicksort adota a estratégia de divisão e conquista. Os passos são: 1. Escolha um elemento da lista, denominado pivô; 2. Rearranje a lista de forma que todos os elementos anteriores ao pivô sejam menores ou iguais a ele, e todos os elementos posteriores ao pivô sejam maiores ou iguais a ele. Ao fim do processo o pivô estará em sua posição final. Essa operação é denominada partição; 3. Recursivamente ordene a sublista dos elementos menores e a sublista dos elementos maiores; A base da recursão são as listas de tamanho zero ou um, que estão sempre ordenadas. O processo é finito pois a cada iteração pelo menos um elemento é posto em sua posição final e não será mais manipulado na iteração seguinte. Pseudo-código do algoritmo: Quicksort(A,p,r) 1. if p<r then q = partition(a,p,r) 2. quicksort(a,p,q) 3. quicksort(a,q+1,r) Partition(A,p,r) 1. x=a[p] 2. i=p-1 3. j=r+1 4. while true 5. do repeat j=j-1 6. until A[j]<=x 7. repeat i=i+1 8. until A[i]>=x 9. if i<j the exchange A[i] <->A[j] 10. else return j [1] Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest. Introduction to Algorithms. MIT Press/McGraw-Hill, [2] [3] Sedgewick, R. (1988) Algorithms. Addison-Wesley, Reading, Massachusetts.

5 2 - Ordenação pelo método de selection sort O Selection Sort utiliza um o conceito de "selecionar o elemento mais apto". Ele seleciona o menor ou maior valor do vetor p.ex. e passa para a primeira (ou última posição dependendo da ordem requerida), depois o segundo menor para a segunda posição e assim sucessivamente com (n-1) elementos restantes até os dois últimos. Pseudo-código do algoritmo: 1. para i=0 até n-1 2. mínimo=i 3. para j=i+1 até N 4. se vetor[j]<vetor[mínimo] 5. mínimo=j 6. auxiliar=vetor[i] 7. vetor[i]=vetor[mínimo] 8. vetor[mínimo]=auxiliar Refêrencias: [1] [2] [3] Sedgewick, R. (1988) Algorithms. Addison-Wesley, Reading, Massachusetts.

6 3 - Ordenação pelo método de Insertion sort Insertion sort, ou ordenação por inserção, é um simples algoritmo de ordenação, eficiente quando aplicado a um pequeno número de elementos. Em termos gerais, ele percorre um vetor de elementos da esquerda para a direita e à medida que avança vai deixando os elementos mais à esquerda ordenados. O algoritmo de inserção funciona da mesma maneira com que muitas pessoas ordenam cartas em um jogo de baralho como o pôquer. Pseudo-código do algoritmo: 1. insere(array vetor, int tamanho, valor) { 2. int i = tamanho - 1; 3. while (i >= 0 && vetor[i] > valor) { 4. vetor[i + 1] = vetor[i]; 5. i=i-1; 6. } 7. vetor[i + 1] = valor; 8. } 1. insertionsort(array vetor, int tamanho) { 2. for (int i = 1; i < tamanho; i++) 3. insere(vetor, i, vetor[i]); 4. } [1] [2] Sedgewick, R. (1988) Algorithms. Addison-Wesley, Reading, Massachusetts.

7 4 - Ordenação pelo método de Counting sort O algoritmo de counting sort assume que cada um dos n elementos da entrada é um inteiro no intervalo [1,k] para um inteiro k. A idéia básica do algoritmo de counting sort é determinar, para cada elemento da entrada x, o número de elementos menores que x. Esta informação pode ser utilizada para posicionar o elemento x diretamente na sua posição no array de saída. Por exemplo, se existem 17 elementos menores que x, então x pertence a posição 18 no array de saída. Pseudo-Código: No algoritmo em pseudo-código assumimos que a entrada é o array A[] e portando tamanho de A[]=n. Necessitamos de outros 2 arrays o array B[] que contém a saída ordenada e um array temporário C[]. CountingSort(A,B,k) 1. for i=1 to k 2. do C[i]=0 3. for j=1 to lenght[a] 4. do C[A[j]]= C[A[j]]+1 # C agora contem o numero de elementos igual a i 5. for i=2 to k 6. do C[i]=C[i]+c[i-1] 7. #C agora contem o numero de elementos menor ou igual a i 8. for l=lenght[a] down to 1 9. do B[C[A[j]]]= A[j] 10. C[A[j]] = C[A[j]]-1 [1] Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest. Introduction to Algorithms. MIT Press/McGraw-Hill, [2] [3]

8 5 - Ordenação pelo método de HeapSort O heapsort utiliza uma estrutura de dados chamada heap para ordenar os elementos a medida que os insere na estrutura. Assim, ao final das inserções, os elementos podem ser sucessivamente removidos da raiz da heap, na ordem desejada. Para uma ordenação crescente, deve ser construído um heap máximo (o maior elemento fica na raiz). 1. heapsort(int a[], int n){ 2. int i = n/2, pai, filho; 3. int t; 4. while true{ 5. if (i > 0){ 6. i=i-1; 7. t = a[i]; 8. }else{ 9. n=n-1; 10. if (n == 0) return; 11. t = a[n]; 12. a[n] = a[0]; 13. } 14. pai = i; 15. filho = i*2 + 1; 16. while (filho < n){ 17. if ((filho + 1 < n) && (a[filho + 1] > a[filho])) 18. filho=filho+1; 19. if (a[filho] > t){ 20. a[pai] = a[filho]; 21. pai = filho; 22. filho = pai*2 + 1; 23. } 24. else 25. break; 26. } 27. a[pai] = t; 28. } 29.} [1] Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest. Introduction to Algorithms. MIT Press/McGraw-Hill, [2] [3] Sedgewick, R. (1988) Algorithms. Addison-Wesley, Reading, Massachusetts.

9 6 - Ordenação pelo método de CockTail Sort O Algoritmo de Cocktail sort é uma pequena variação do bubble sort. A diferença é que ao invés de percorrer a lista do fim para o início, ele passa alternadamente do fim para o início e então do início para o fim Algoritmo em Pseudo-Código: 1. cocktail_sort(list[], list_length){ 2. bottom = 0; 3. top = list_length - 1; 4. swapped = true; 5. while(swapped == true){ 6. swapped = false; 7. for(i = bottom; i < top; i = i + 1){ 8. if(list[i] > list[i + 1]){ 9. swap(list[i], list[i + 1]); 10. swapped = true; 11. } 12. } 13. top = top - 1; 14. for(i = top; i > bottom; i = i - 1){ 15. if(list[i] < list[i - 1]){ 16. swap(list[i], list[i - 1]); 17. swapped = true; 18. } 19. } 20. bottom = bottom + 1; 21. } 22.} [1]

10 7 - Ordenação pelo método de Shell Sort O algoritmo Shell Sort é uma extensão do Insertion Sort com 2 observações: * Insertion Sort é eficiente se a entrada está quase ordenada * Insertion Sort é ineficiente, no caso geral, pois move valores de uma posição por vez O algoritmo de Shell Sort é similar ao de Insertion Sort, porém trabalha utilizando passos mais largos conforme ordena os valores, e vai diminuindo o valor do passo gradualmente ate que este se torne 1. No final, o shell sort faz um insertion sort comum, porém o array de dados é garantidamente quase ordenado. Algoritmo em Pseudo-Código: 1. shellsort(int a[], int l, int r){ 2. int i, j, k, h, v; 3. int incs[16] = { , , , 86961, 33936, , 4592, 1968, 861, 336, , 48, 21, 7, 3, 1 }; 6. for ( k = 0; k < 16; k++) 7. for (h = incs[k], i = l+h; i <= r; i++){ 8. v = a[i]; j = i; 9. while (j >= h && a[j-h] > v){ 10. a[j] = a[j-h]; 11. j -= h; 12. } 13. a[j] = v; 14. } 15. } [1] Sedgewick, R Analysis of Shellsort and Related Algorithms. In Proceedings of the Fourth Annual European Symposium on Algorithms (September 25-27, 1996). J. Díaz and M. J. Serna, Eds. Lecture Notes In Computer Science, vol Springer-Verlag, London, [2] Sedgewick, R. (1988) Algorithms. Addison-Wesley, Reading, Massachusetts. [3] [4]

11 8 - Ordenação pelo método de Merge Sort O merge sort, ou ordenação por mistura, é um exemplo de algoritmo de ordenação do tipo dividirpara-conquistar. Sua idéia básica é que é muito fácil criar uma sequência ordenada a partir de duas outras também ordenadas. Para isso, ele divide a sequência original em pares de dados, ordena-as; depois as agrupa em sequências de quatro elementos, e assim por diante, até ter toda a sequência dividida em apenas duas partes. Os três passos úteis dos algoritmos dividir-para-conquistar, ou divide and conquer, que se aplicam ao merge sort são: 1. Dividir: Dividir os dados em subsequências pequenas; 2. Conquistar: Classificar as duas metades recursivamente aplicando o merge sort; 3. Combinar: Juntar as duas metades em um único conjunto já classificado. Algoritmo em Pseudo-Código: 1. function mergesort(m) 2. var list left, right, result 3. if length(m) = 1 4. return m 5. else 6. var middle = length(m) / 2 7. for each x in m up to middle 8. add x to left 9. for each x in m after middle 10. add x to right 11. left = mergesort(left) 12. right = mergesort(right) 13. result = merge(left, right) 14. return result 15. function merge(left,right) 16. var list result 17. while length(left) > 0 and length(right) > if first(left) = first(right) 19. append first(left) to result 20. left = rest(left) 21. else 22. append first(right) to result 23. right = rest(right) 24. if length(left) > append rest(left) to result 26. if length(right) > append rest(right) to result 28. return result [1] Sedgewick, R. (1988) Algorithms. Addison-Wesley, Reading, Massachusetts. [2] [3]

12 9 - Ordenação pelo método de Comb Sort É um algoritmo de ordenação simplístico, projetado por Stephen Lacey e Richard Box. É uma melhoria de algoritmos como o bubble sort em velocidade. A idéia básica é eliminar valores pequenos perto do final da lista, nos algoritmos tipo bubble sort estes valores diminuem a performance enormemente. No Bubble Sort, quando dois elementos são comparados, eles sempre tem gap (distância de um para outro) de 1. A idéia básica do comb sort é que o gap pode ser mais de 1. Algoritmo em Pseudo-Código: 1. function combsort11(array input) 2. gap := input.size 3. loop until gap = 1 and swaps = 0 4. if gap > 1 5. gap := gap / if gap = 10 or gap = 9 7. gap := end if 9. end if 10. i := swaps := loop until i + gap >= array.size 13. if array[i] > array[i+gap] 14. swap(array[i], array[i+gap]) 15. swaps := swaps end if 17. i := i end loop 19. end loop 20. end function [1]

13 10 - Ordenação pelo método Gnome sort O algoritmo de ordenação conhecido como Gnome Sort foi inventado por Dick Grune, e em suas palavras é o algoritmo de ordenação mais simples. É basicamente um algoritmo de Bubble Sort com uma particularidade: é bi-direcional. Pseudo-código do algoritmo: 1. gnomesort(a[]) { 2. i = 1 3. j = 2 4. while i = size if a[i-1] = a[i] 6. i = j 7. j = j else 9. swap a[i-1] and a[i] 10. i = i if i = i = } [1] [2] [3]

14 11 - Ordenação de Strings pelo método Bubble Sort (Ordem alfabética) Utilize o método de ordenação Bubble Sort para ordenar dados do tipo string Assuma que: os strings são todos em letras minúsculas contém valores no intervalo [a-z] tem tamanho fixo de 3 elementos exemplos ('aba','zoi','fui','etc') lembrando que um string com o conteúdo 'abc' do tipo.asciiz contém 4 elementos 'abc0' onde 0(zero) é o elemento que indica o término de um string (null), e cada caracter possui 1 byte para comparar se uma letra é alfabeticamente maior ou menor que a outra utilize a tabela ASCII [3] Algoritmo em Pseudo-Código: #retorna 1 se str1<str2 #retorna 0 se str1=str2 #retorna 2 se str1>str2 1. comparestring(str1,str2){ 2. i=0 3. enquanto i<3 faça 4. se str1[i]<str2[i]{ 5. retorne 1 6. break 7. } 8. senao se str1[i]>str2[i]{ 9. retorne break 11. } 12. i=i fimenquanto 14. retorne 0 15.} BUBBLESORT (V[], n) 1 houvetroca <- verdade 2 enquanto houvetroca for verdade faça 3 houvetroca <- falso 4 para i de 1 até n-1 faça 5 se CompareString(V[i],V[i+1])=2 6 então troque V[i] e V[i + 1] de lugar e 7 houvetroca <- verdade [1] Sedgewick, R. (1988) Algorithms. Addison-Wesley, Reading, Massachusetts. [2] [3]

15 12 - Pesquisa Binária em um Array Ordenado A pesquisa ou busca binária é um algoritmo de busca em vetores que requer acesso aleatório aos elementos do mesmo. Ela parte do pressuposto de que o vetor está ordenado, e realiza sucessivas divisões do espaço de busca comparando o elemento buscado (chave) com o elemento no meio do vetor. Se o elemento do meio do vetor for a chave, a busca termina com sucesso. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior do vetor. E finalmente, se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor. A complexidade desse algoritmo é da ordem de log2 n, onde n é o tamanho do vetor de busca. Como resultado do seu programa, ele deve devolver o índice no array, que o elemento foi encontrado. Pseudo-código do algoritmo: 1. BUSCA-BINÁRIA (V[], inicio, fim, valor} 2. i recebe o índice no meio de inicio e fim 3. se V[i] é igual a valor 4. então devolva o índice i # encontrei valor 5. senão se V[i] vem antes de valor 6. então faça a BUSCA-BINÁRIA(V, i+1, fim, valor) 7. senão faça a BUSCA-BINÁRIA(V, inicio, i-1, valor) [1] [2] Sedgewick, R. (1988) Algorithms. Addison-Wesley, Reading, Massachusetts.

16 13 - Criação e operações simples em Listas Ligadas Uma lista ligada é uma estrutura de dados linear e dinâmica. Ela é composta por células que apontam para o próximo elemento da lista. Para "ter" uma lista ligada, basta guardar seu primeiro elemento, e seu último elemento aponta para uma célula nula. O esquema a seguir representa uma lista ligada com 5 elementos: Nodo 1 --> Nodo 2 --> Nodo 3 --> Nodo 4 --> Nodo 5 --> (Nulo) considere a lista contendo elementos do tipo inteiro, como a palavra do MIPS é de 4 bytes, considere a estrutura Nodo como sendo 8 bytes. Um ponteiro para um nodo é NULO ou aponta para outro nodo. Os nodos serão armazenados na pilha na ordem como: o primeiro nodo da lista contém o número mais recentemente inserido,e o último nodo contém o primeiro número inserido. Neste trabalho serão implementados 2 métodos relacionados com listas:? inserenodo: insere um nodo na lista, este nodo contém o valor a ser inserido, e deve ser inserido no início? printlist: imprime a lista no console do SPIM Para facilitar na implementação considere o atributo head, este aponta para o primeiro nodo da lista. Algoritmo em Pseudo-Código: 1. Estrutura Nodo 2. ponteiro para Nodo next 3. int valor 1. Nodo* head; 2. inserenodo(int valor) { 3. Estrutura nodo *temp = malloc(sizeof(struct node)); 4. temp->next = head; 5. temp->value = value; 6. head = temp; 7. } 8. printlist { 9. Estrutura nodo *ptr; 10. ptr = head; 11. while (ptr!=0) { 12. printf(ptr->value); 13. ptr = ptr->next; 14. } 15.} [1] Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest. Introduction to Algorithms. MIT Press/McGraw-Hill, [2] Sedgewick, R. (1988) Algorithms. Addison-Wesley, Reading, Massachusetts.

17 14 - Criação e operações simples em Filas As filas são estruturas baseadas no princípio FIFO (first in, first out), em que os elementos que foram inseridos no início são os primeiros a serem removidos. Uma fila possui duas funções básicas: ENQUEUE, que adiciona um elemento ao final da fila, e DEQUEUE, que remove o elemento no início da fila. A operação ENQUEUE sempre pode ser executada, uma vez que teoricamente uma fila não tem limite. A operação DEQUEUE só pode ser aplicado se a fila não estiver vazia, causando um erro de underflow ou fila vazia se esta operação for realizada nesta situação. Considere a fila contendo elementos do tipo inteiro, como a palavra do mips é de 4 bytes, considere a estrutura Element como sendo 8 bytes. Um ponteiro para um elemento é NULO ou aponta para outro elemento. Considere para meios de simplificação que só temos o método ENQUEUE, e outro método que imprime a fila no console. Algoritmo em Pseudo-Código: 1. Element 2. int value; 3. element* next; 4. Fila 5. int size; 6. element* head; 7. element* tail; 8. Enqueue(int ele){ 9. if(head==null){ 10. head=new element; 11. tail=head; 12. head->value=ele; 13. head->next=null; 14. }else{ 15. tail->next=new element; 16. tail->next->value=ele; 17. tail->next->next=null; 18. tail=tail->next; 19. } 20. size=size+1; 21.} 22. printqueueelements{ 23. element* curr2; 24. curr2= head; 25. while(curr2!=null){ 26. imprime(curr2->value); 27. curr2=curr2->next; 28. } 29. } [1] Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest. Introduction to Algorithms. MIT Press/McGraw-Hill, [2] Sedgewick, R. (1988) Algorithms. Addison-Wesley, Reading, Massachusetts.

18 15 - Multiplicação de matrizes Em matemática, o produto de duas matrizes é definido somente quando o número de colunas da primeira matriz é igual ao número de linhas da segunda matriz. Se A é uma matriz m-por-n e B é uma matriz n-por-p, então seu produto é uma matriz m-por-p definida como AB (ou por A B). O produto é dado por: para cada par i e j com 1 = i = m e 1 = j = p. Algoritmo em Pseudo-Código: 1. programa multiplica_matrizes; 2. matriz mat1, mat2, mat3; 3. inteiro linha, coluna, i, acumula; 4. "verifique se mat1 é compativel com mat2"; 5. para linha de 1 até "numero de linhas de mat1" faça 6. para coluna de 1 até "numero de colunas de mat2" faça 7. acumula=0; 8. para i de 1 até "numero de colunas de mat1" faça 9. acumula=acumula+mat1[linha][i]*mat2[i][coluna]; 10. fimpara; 11. mat3[linha][coluna]=acumula; 12. fimpara; 13. fimpara; 14. imprima mat3; 15. fim programa; [1] [2]

Algoritmos de Ordenação em LISP

Algoritmos de Ordenação em LISP Algoritmos de Ordenação em LISP Léo Willian Kölln 8 de Agosto de 2006 Curso de Ciências da Computação Programação Funcional - INE5363 INE - Departamento de Informática e Estatística CTC - Centro Tecnológico

Leia mais

Projeto e Análise de Algoritmos

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

Leia mais

Arquivos Sequenciais. Estruturas de Dados II Vanessa Braganholo

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

Leia mais

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - I

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - I ESTRUTURAS DE DADOS E ALGORITMOS 1 ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - I Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande CONTEXTO 2 ORDENACAO Uma das

Leia mais

Estruturas de Dados Algoritmos de Ordenação

Estruturas 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 mais

Métodos de Ordenação Parte 3

Mé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 mais

Universidade 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 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 mais

MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI2

MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI2 MÉTODOS DE ORDENAÇÃO Introdução à Programação SI2 2 Conteúdo Conceitos básicos Classificação por troca Classificação por inserção Classificação por seleção 3 Conceitos Básicos Ordenar: processo de rearranjar

Leia mais

ALGORITMOS DE ORDENAÇÃO

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,

Leia mais

Bubble Sort. Tempo total O(n 2 )

Bubble Sort. Tempo total O(n 2 ) Bubble Sort Considere uma seqüência de n elementos que se deseja ordenar. O método da bolha resolve esse problema através de várias passagens sobre a seqüência Não é um algoritmo eficiente, é estudado

Leia mais

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 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 mais

MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI1

MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI1 MÉTODOS DE ORDENAÇÃO Introdução à Programação SI1 2 Conteúdo Conceitos básicos Classificação por troca Classificação por inserção Classificação por seleção 3 Conceitos Básicos Ordenar: processo de rearranjar

Leia mais

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 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 mais

Análise empírica de algoritmos de ordenação

Análise empírica de algoritmos de ordenação Análise empírica de algoritmos de ordenação Mario E. Matiusso Jr. (11028407) Bacharelado em Ciências da Computação Universidade Federal do ABC (UFABC) Santo André, SP Brasil mario3001[a]ig.com.br Resumo:

Leia mais

Algoritmos de Ordenação

Algoritmos de Ordenação Algoritmos de Ordenação Leandro Tonietto Unisinos ltonietto@unisinos.br http://professor.unisinos.br/ltonietto Atualizado em 7-Jun-12 http://professor.unisinos.br/ltonietto/inf/lb2/sort.pdf ! Objetivos!

Leia mais

Algoritmos de Ordenação

Algoritmos 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 mais

Estrutura de Dados. Diego Silveira Costa Nascimento

Estrutura 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 mais

Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias:

Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias: ORDENAÇÃO A atividade de ordenação é o processo de rearranjo de um certo conjunto de objetos de acordo com um critério (ordem) específico. O objetivo da ordenação é facilitar a localização dos membros

Leia mais

Algoritmos de ordenação Quicksort

Algoritmos de ordenação Quicksort Algoritmos de ordenação Quicksort Sumário Introdução Descrição do quicksort Desempenho do quicksort Pior caso Melhor caso Particionamento balanceado Versão aleatória do quicksort Análise do quicksort Pior

Leia mais

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

Leia mais

INF111 Programação II Aulas 11, 12, 13 Ordenação

INF111 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 mais

Algoritmos de Ordenação: QuickSort

Algoritmos de Ordenação: QuickSort Algoritmos de Ordenação: QuickSort 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 dbeder@usp.br 10/2008 Material

Leia mais

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 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 mais

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 Sala 110 Prédio da Computação   IECE - ITA 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 MÉTODOS MAIS EFICIENTES QUE O(N 2 ) Método Quicksort Método

Leia mais

Ordenaçã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   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 mais

Ordenação em Tempo Linear. Leitura: Cormen Capítulo 8

Ordenação em Tempo Linear. Leitura: Cormen Capítulo 8 Ordenação em Tempo Linear Leitura: Cormen Capítulo 8 Revisão Insertion sort: Vantagens Fácil de implementar Rápido em entradas com menos de 50 elementos. Rápido em entradas aproximadamente ordenadas. Desvantagens

Leia mais

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia

Marcelo 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 mais

Radix Sorting. Várias aplicações têm chaves que são inteiros, definidos dentro de um intervalo

Radix Sorting. Várias aplicações têm chaves que são inteiros, definidos dentro de um intervalo Radix Sorting Os registros a serem ordenados podem ter chaves bastante complexas, como por exemplo sequências de caracteres (lista telefônica) o Ordenação via comparação de chaves Várias aplicações têm

Leia mais

Algoritmos de Ordenação. Cota inferior. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

Algoritmos de Ordenação. Cota inferior. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO Algoritmos de Ordenação Cota inferior Professora: Fátima L. S. Nunes 1 1 1 Algoritmos de Ordenação Algoritmos de ordenação que já conhecemos: 2 2 2 Algoritmos de Ordenação Algoritmos de ordenação que já

Leia mais

Métodos de ordenação. Bubble sort:

Métodos de ordenação. Bubble sort: Métodos de ordenação Bubble sort: O método de ordenação por bubble sort ou conhecido como bolha consiste em compara dados armazenados em um vetor de tamanho qualquer, comparando cada elemento de uma posição

Leia mais

USP - ICMC - SSC SSC o. Semestre Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

USP - ICMC - SSC SSC o. Semestre Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ] USP - ICMC - SSC SSC 0300-2o. Semestre 2013 Disciplina de [ Eng. Elétrica / Automação ] Prof. Dr. Fernando Santos Osório / PAE: Rafael Klaser (LRM / ICMC) LRM - Laboratório de Robótica Móvel do ICMC /

Leia mais

Algoritmos 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 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 mais

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Análise de Algoritmos Aula 10 Métodos de Ordenação de Complexidade Linear Edirlei Soares de Lima Ordenação Problema: Entrada: conjunto de itens a 1, a 2,..., a n ; Saída:

Leia mais

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões Edital de Seleção 024/2017 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: «Nome» INSCRIÇÃO: «Inscrição» Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome

Leia mais

UNIVERSIDADE FEDERAL DO PIAUÍ COLÉGIO TÉCNICO DE TERESINA-TÉCNICO EM INFORMÁTICA DISCIPLINA: ESTRUTURA DE DADOS PROFESSOR: Valdemir Junior

UNIVERSIDADE FEDERAL DO PIAUÍ COLÉGIO TÉCNICO DE TERESINA-TÉCNICO EM INFORMÁTICA DISCIPLINA: ESTRUTURA DE DADOS PROFESSOR: Valdemir Junior UNIVERSIDADE FEDERAL DO PIAUÍ COLÉGIO TÉCNICO DE TERESINA-TÉCNICO EM INFORMÁTICA DISCIPLINA: ESTRUTURA DE DADOS PROFESSOR: Valdemir Junior ALGORITMO DE ORDENAÇÃO HEAPSORT Alyson Pereira Barbosa Erisvaldo

Leia mais

CIC 110 Análise e Projeto de Algoritmos I

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.

Leia mais

Estruturas de Dados 2

Estruturas de Dados 2 Estruturas de Dados 2 Técnicas de Projeto de Algoritmos Dividir e Conquistar IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/83 Projeto de Algoritmos por Divisão

Leia mais

MC102 - 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 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 mais

Prova 2 PMR2300 1o. semestre 2015 Prof. Thiago Martins

Prova 2 PMR2300 1o. semestre 2015 Prof. Thiago Martins Prova PMR00 o. semestre 0 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço.. ( pontos) Um heap binário é uma árvore binária completa (todos os níveis exceto o último

Leia mais

Projeto e Análise de Algoritmos

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

Leia mais

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Introdução aos Algoritmos e Estruturas de Dados 2 o Teste - A LEIC Alameda, 2007/2008 Data: 12 de Junho de 2008 2 o Semestre Duração: 2h RESOLUÇÃO I. (2.5+2.5 = 5.0 val.) I.a) Suponha que está a trabalhar

Leia mais

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

Leia mais

Algoritmos de Ordenação. Profº Carlos Alberto T. Batista

Algoritmos de Ordenação. Profº Carlos Alberto T. Batista Algoritmos de Ordenação Profº Carlos Alberto T. Batista E-mail: carlos.batista@facape.br carlos36_batista@yahoo.com.br Por que ordenar os dados? Encontrar elementos em uma lista torna-se algo simples e

Leia mais

Recuperação P1 de Estrutura de Dados

Recuperaçã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 mais

Vectores: Algoritmos de Ordenação. Algoritmos e Estruturas de Dados 2009/2010

Vectores: 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 mais

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - II

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - II ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - II Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande ALGORITMOS VISTOS ANTERIORMENTE

Leia mais

Princípio da Multiplicação. > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 0/18

Princípio da Multiplicação. > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 0/18 Conteúdo 1 Corretude de Algoritmos 2 Princípios de Contagem e Enumeração Computacional Princípio da Multiplicação > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 0/18 Corretude

Leia mais

Métodos de Ordenação

Métodos de Ordenação Métodos de Ordenação Conceitos básicos sobre ordenação Ordenar corresponde ao processo de rearranjar um conjunto de objetos em uma ordem específica. Objetivo da ordenação: facilitar a recuperação posterior

Leia mais

5. Algoritmos de Ordenação

5. Algoritmos de Ordenação Introdução à Computação II 5952011 5. Algoritmos de Ordenação Prof. Renato Tinós Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 5.1. Ordenação por Inserção 5.2. Ordenação por Seleção

Leia mais

Classes, Herança e Interfaces

Classes, Herança e Interfaces Escola de Artes, Ciências e Humanidades EACH-USP ACH2002 Introdução à Ciência da Computação II Professor: Delano Medeiros Beder revisada pelo professor: Luciano Digiampietri EACH Segundo Semestre de 2011

Leia mais

Estruturas Discretas

Estruturas Discretas Estruturas Discretas 2017.2 Marco Molinaro > Indução Forte Corretude de Algoritmos 1/20 Indução Forte > Indução Forte Corretude de Algoritmos 2/20 Indução Forte X Indução Fraca Para provar Propriedade

Leia mais

Listas (Parte 1) Túlio Toffolo BCC202 Aula 09 Algoritmos e Estruturas de Dados I

Listas (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 mais

Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet

Universidade 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 mais

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

Leia mais

Métodos de Ordenação Parte 2

Mé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 mais

Arvores binárias. Fonte: https://www.tumblr.com/ PF 14 pf/algoritmos/aulas/bint.html

Arvores binárias. Fonte: https://www.tumblr.com/ PF 14  pf/algoritmos/aulas/bint.html AULA 25 Arvores binárias Fonte: https://www.tumblr.com/ PF 14 http://www.ime.usp.br/ pf/algoritmos/aulas/bint.html Mais tabela de símbolos Uma tabela de símbolos (= symbol table = dictionary) é um conjunto

Leia mais

Ordenação. Prof. Jonas Potros

Ordenação. Prof. Jonas Potros Ordenação Prof. Jonas Potros Conceitos Básicos Ordenar: processo de rearranjar um conjunto de objetos em uma ordem ascendente ou descendente. A ordenação visa facilitar a recuperação posterior de itens

Leia mais

Programação Estruturada

Programaçã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 mais

Lista 1. 8 de abril de Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b.

Lista 1. 8 de abril de Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b. Lista 1 8 de abril de 2013 1 Exercícios Básicos 1.1 Na bibliografia Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b. 1.2 Outros 1. Projete

Leia mais

Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )

Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( ) Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista (2.1-2.2) DECOM/UFOP 2013/1 5º. Período Anderson Almeida Ferreira Adaptado do material desenvolvido por Andréa Iabrudi

Leia mais

Filas de Prioridade. Uma fila de prioridade pode ser vista como uma generalização das filas com as seguintes duas operações:

Filas de Prioridade. Uma fila de prioridade pode ser vista como uma generalização das filas com as seguintes duas operações: Filas de Prioridade e Heaps 9.1 Filas de Prioridade Uma fila de prioridade pode ser vista como uma generalização das filas com as seguintes duas operações: inserir um elemento na fila; remover o elemento

Leia mais

Edital de Seleção 023/2018 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Edital de Seleção 023/2018 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões Edital de Seleção 023/2018 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

Leia mais

O Problema da Ordenação Métodos de Ordenação Parte 1

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

Leia mais

Classificação por Seleção - selection sort

Classificação por Seleção - selection sort Classificação por Seleção - selection sort Outro método também simples de ordenação é a ordenação por seleção. Princípio de funcionamento: 1. Selecione o menor item do vetor (ou o maior). 2. Troque-o com

Leia mais

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Algoritmos Pontifícia Universidade Católica de Minas Gerais harison@pucpcaldas.br 26 de Maio de 2017 Sumário A complexidade no desempenho de Quando utilizamos uma máquina boa, ela tende a ter

Leia mais

Análise e Complexidade de Algoritmos

Aná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 mais

Métodos de Ordenação: Selection, Insertion, Bubble, Merge (Sort)

Mé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 mais

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula Tópicos Introdução Ordenação por bolha (bubble sort)

Leia mais

Divisão-e-Conquista ( ) CAL ( ) MIEIC/FEUP. ./rr (1) Técnicas de Concepção de Algoritmos

Divisão-e-Conquista ( ) CAL ( ) MIEIC/FEUP. ./rr (1) Técnicas de Concepção de Algoritmos 1 Técnicas de Concepção de Algoritmos (1ª parte): divisão e conquista R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes CAL, MIEIC, FEUP Fevereiro de 2011 2 Divisão e Conquista (divide and

Leia mais

Análise e Complexidade de Algoritmos

Análise e Complexidade de Algoritmos Análise e Complexidade de Algoritmos Métodos de Ordenação - seleção e inserção - seleção e troca (bubble sort) - merge e quick sort - radix - hashing Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com http://www.bolinhabolinha.com

Leia mais

Ordenação. Insertion Sort

Ordenação. Insertion Sort Sumário por trocas de vizinhos. Análise. Limites teóricos Insertion sort. Shellsort recursiva: Mergesort. Análise. Com heap binário: Heapsort. Análise. Divisão e conquista: Quicksort. Análise. Limites

Leia mais

Algoritmos de Ordenação

Algoritmos de Ordenação Algoritmos de Ordenação Introdução à Ciência da Computação Prof. Edison Ishikawa Objetivo Apresentar diferentes algoritmos de ordenação de dados Mostrar como analisar os algoritmos em termos de tempo de

Leia mais

Ordenação e Pesquisa

Ordenação e Pesquisa Ordenação e Pesquisa Luís Lopes DCC-FCUP Estruturas de Dados Pesquisa de Informação A pesquisa eficiente de informação é extremamente relevante, seja: num catálogo indexado por uma relação de ordem, e.g.

Leia mais

Quicksort Letícia Rodrigues Bueno

Quicksort Letícia Rodrigues Bueno Quicksort Letícia Rodrigues Bueno UFABC Quicksort Legenda: pivô; 1 a partição: ; 2 a partição: Quicksort Legenda: pivô; 1 a partição: ; 2 a partição: Quicksort Legenda: pivô; 1 a partição: ; 2 a partição:

Leia mais

Análise de algoritmos

Análise de algoritmos Análise de algoritmos Ordenação em tempo linear Prof. Flávio Rogério Uber (UEM/DIN) Autor: Prof. Marco Aurélio Lopes Barbosa (UEM/DIN) Conteúdo Limites inferiores para ordenação por comparações Ordenação

Leia mais

Ordenação: QuickSort. Prof. Túlio Toffolo BCC202 Aula 15 Algoritmos e Estruturas de Dados I

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

Leia mais

ALGORITMOS E ESTRUTURAS DE DADOS CES-11

ALGORITMOS 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 mais

Aula 19: Métodos eficientes de ordenação

Aula 19: Métodos eficientes de ordenação Algoritmos e Estruturas de Dados I Aula 19: Métodos eficientes de ordenação (Merge sort e Quick sort) Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 1Q-2019 1 Intercalando 2 vetores ordenados 2 Intercalando

Leia mais

Prova Substitutiva PMR3201 1o. semestre 2018 Prof. Thiago Martins

Prova Substitutiva PMR3201 1o. semestre 2018 Prof. Thiago Martins Prova Substitutiva PMR301 1o. semestre 018 Prof. Thiago Martins Instruções Escreva o nome e o número USP na folha de papel almaço. Numere cada página. Indique o total de páginas na primeira página. Os

Leia mais

Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 em PDF via Moodle: Escolha apenas 5 exercícios para entrega Exercício 01 (Pilhas)

Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 em PDF via Moodle: Escolha apenas 5 exercícios para entrega Exercício 01 (Pilhas) Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 Lista Obrigatória 02 - Prof. Rafael Oliveira (Deve ser entregue em PDF via Moodle: Escolha apenas 5 exercícios para entrega) Exercício 01

Leia mais

Web site. Profa. Patrícia Dockhorn Costa.

Web site.  Profa. Patrícia Dockhorn Costa. Estruturas de Dados Aula 1: Introdução e conceitos básicos Web site http://www.inf.ufes.br/~pdcosta/ensino/ Profa. Patrícia Dockhorn Costa Email: pdcosta@inf.ufes.br Monitoria: Alexandro alexandrosouzaramos@gmail.com

Leia mais

Classificação e Pesquisa Aula 6 Métodos de Ordenação: ShellSort e QuickSort. Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional

Classificação e Pesquisa Aula 6 Métodos de Ordenação: ShellSort e QuickSort. Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Classificação e Pesquisa Aula 6 Métodos de Ordenação: ShellSort e QuickSort Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Plano de Ensino e Aprendizagem ( PEA) Algoritmo ShellSort Proposto por

Leia mais

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados Ano Lectivo de 2004/2005 2 o Semestre RESOLUÇÃO DA REPESCAGEM DO 2 o TESTE B I. (2.0+1.5+1.5 = 5.0 val.) a) Qual das seguintes declarações pode

Leia mais

TCC 00308: Programação de Computadores I Introdução

TCC 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 mais

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TURMA 2008/1 2 PERÍODO MÓDULO 3 AVALIAÇÃO MP2 DATA 2/10/2008 ESTRUTURAS DE DADOS 2008/2

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TURMA 2008/1 2 PERÍODO MÓDULO 3 AVALIAÇÃO MP2 DATA 2/10/2008 ESTRUTURAS DE DADOS 2008/2 TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TURMA 2008/1 2 PERÍODO MÓDULO 3 AVALIAÇÃO MP2 DATA 2/10/2008 ESTRUTURAS DE DADOS 2008/2 Dados de identificação do Acadêmico: Nome: Login: CA: Cidade:

Leia mais

Filas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014

Filas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014 Filas de prioridade Marcelo K. Albertini de Novembro de / Filas de prioridade O que é uma fila de prioridade? Estrutura de dados que generaliza a ideia de ordenação. Coleções de elementos: inserir e remover

Leia mais

Licenciatura em Informática Introdução a Ciência dos Computadores 1º Ano

Licenciatura em Informática Introdução a Ciência dos Computadores 1º Ano Licenciatura em Informática Introdução a Ciência dos Computadores 1º Ano Data : 24-01-2012 Parte Teórica 1º Ano - 1º Semestre Teste Tipo - Resolução Duração : 60 Minutos Prof. : Jorge Mota Numero : Nome

Leia mais

Prova 1 PMR2300 / PMR3201 1o. semestre 2015 Prof. Thiago Martins

Prova 1 PMR2300 / PMR3201 1o. semestre 2015 Prof. Thiago Martins Prova 1 PMR2300 / PMR3201 1o. semestre 2015 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. Indique na linha seguinte quatro das cinco questões abaixo que devem

Leia mais

Ordenação por Intercalação Métodos de Ordenação Parte 4

Ordenação por Intercalação Métodos de Ordenação Parte 4 Ordenação por Intercalação Métodos de Ordenação Parte 4 SCC-601 Introdução à Ciência da Computação II Rosane Minghim 2010 Revisando... Também chamado merge-sort Idéia básica: dividir para conquistar Um

Leia mais

Paradigmas de programação

Paradigmas de programação Paradigmas de programação 1 Paradigma? Um paradigma é algo que serve de exemplo ou modelo. Sinônimos: Padrão Prototipo 2 Paradigma de programação? É uma proposta tecnológica. Fornece uma visão do programador

Leia mais

Métodos de Ordenação Parte 4

Métodos de Ordenação Parte 4 Métodos de Ordenação Parte 4 Introdução à Ciência de Computação II Prof. Diego Raphael Amancio Baseado no material do Prof. Rudinei Goularte e Prof. Thiago A. S. Pardo 1 Ordenação por Intercalação Revisando...

Leia mais

Métodos de Ordenação Parte I

Métodos de Ordenação Parte I Estrutura de Dados II Métodos de Ordenação Parte I Prof a Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material baseado nos materiais da Prof a Ana Eliza e Prof. Robson Lins Rearranjar

Leia mais

Estruturas de Dados Encadeadas

Estruturas de Dados Encadeadas CURSO: Ciência da Computação DATA: / / 2016 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 14 APRESENTAÇÃO Na aula de hoje vamos apresentar e discutir conceitos

Leia mais

Aula 12 Métodos de Classificação: - Classificação por Inserção Direta - Classificação por Seleção Direta

Aula 12 Métodos de Classificação: - Classificação por Inserção Direta - Classificação por Seleção Direta Aula 12 Métodos de Classificação: - Classificação por Inserção Direta - Direta Prof. Gustavo Callou gustavo.callou@ufrpe.br gcallou@gmail.com Classificação por Inserção Métodos de Classificação em Memória

Leia mais

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO Disciplina: Estrutura de Dados II Turma: 4EC/5CC Data: 13/11/15 Nota: Professor: Renato E. N. de Moraes Semestre: 2015-2 Valor: 0,0 pts Aluno: Lista de exercícios 04 1. O que é a eficiência assintótica

Leia mais

2 Erro comum da indução. 3 Corretude de Algoritmos. > Indução Forte X Indução Fraca Erro comum da indução Corretude de Algoritmos 0/17

2 Erro comum da indução. 3 Corretude de Algoritmos. > Indução Forte X Indução Fraca Erro comum da indução Corretude de Algoritmos 0/17 Conteúdo 1 Indução Forte X Indução Fraca 2 Erro comum da indução 3 Corretude de Algoritmos > Indução Forte X Indução Fraca Erro comum da indução Corretude de Algoritmos 0/17 Indução Forte X Indução Fraca

Leia mais

Complexidade Assintótica de Programas Letícia Rodrigues Bueno

Complexidade Assintótica de Programas Letícia Rodrigues Bueno Complexidade Assintótica de Programas Letícia Rodrigues Bueno Análise de Algoritmos 1. Introdução; Análise de Algoritmos 1. Introdução; 2. Conceitos básicos; Análise de Algoritmos 1. Introdução; 2. Conceitos

Leia mais

Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional

Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional Disciplina: Algoritmos e Estruturas de Dados Professor: Flávio Cardeal Lista de

Leia mais