Estrutura de Dados. Diego Silveira Costa Nascimento

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

Download "Estrutura de Dados. Diego Silveira Costa Nascimento"

Transcrição

1 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

2 Ementa do Curso 1 Introdução 2 Tipo de Dados 3 Ordenação 4 Lista 5 Pilha 6 Fila 7 Árvore Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

3 Ementa do Curso 1 Introdução 2 Tipo de Dados 3 Ordenação 4 Lista 5 Pilha 6 Fila 7 Árvore Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

4 Objetivos da Disciplina Consolidar os conhecimentos sobre programação previamente adquiridos; Identificar e desenvolver modelos matemáticos, determinando que classes de problemas podem ser resolvidos com o uso deles; Criar representações concretas dos objetos e desenvolver rotinas capazes de atuar sobre essas representações, de acordo com o modelo considerado; Fornecer domínio de alocação dinâmica de memória; Apresentar as principais estruturas de dados: lista, fila, pilha, árvores e tabelas de dispersão; Introduzir aspectos básicos da complexidade de algoritmos; Apresentar os principais processos de ordenação e pesquisa de dados. Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

5 Motivações em Estudar Estrutura de Dados Proporciona reúso de código; Diminui custos de desenvolvimento e manutenção; Melhora o desempenho do sistema; e Organiza as informações. Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

6 Definições Algoritmo É uma sequência finita e lógica de instruções ou passos, especificados em uma determinada linguagem, que mostram como resolver determinado problema. Estrutura de Dados É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados de modo eficiente. Programa É uma expressão em linguagem formal inteligível por um computador (Algoritmos + Estruturas de dados). Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

7 Ementa do Curso 1 Introdução 2 Tipo de Dados 3 Ordenação 4 Lista 5 Pilha 6 Fila 7 Árvore Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

8 Tipos de Dados Definição São combinações de valores em que uma variável pode armazenar. Importante Dependendo da linguagem de programação, o tipo de um dado é verificado diferentemente, de acordo com a análise léxica, sintática e semântica do compilador ou interpretador da linguagem. Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

9 Tipos de Dados em Python Numérico; Cadeia de caracteres; Lógico; Tupla; Lista; Conjunto; e Dicionário. Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

10 Tipo Numérico Definição Representa uma quantidade contável. Os tipos de dados numéricos podem ser: Inteiro; Real; e Complexo. Exemplos a = 3 b = 2.5 c = 2j Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

11 Operações com Tipo Numérico As operações possíveis são: + (Adição); - (Subtração); * (Multiplicação); / (Divisão); // (Divisão inteira); % (Resto); e ** (Potênciação) Exemplos a = b = 5 / 2 c = 3 * 2j d = 3 % 2 e = 4 ** 0.5 Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

12 Tipo Cadeia de Caracteres Definição Representa uma sequência de dígitos, letras e sinais. Exemplos a = ' Estrutura de Dados ' b = "Ní vel 2" c = '2 + 2 = 4' d = u'ol\xe1 ' Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

13 Operações com Tipo de Cadeia de Caracteres len (Tamanho da string); count (Conta quantas vezes uma caracter aparece); lower (Converte as letras para minúscula); upper (Converte as letras para maiúscula); replace (Substitui as letras por outra); split (Quebra uma string a partir dos espaços em branco); Exemplos a = len ('IFRN ') b = ' Estrutura de Dados '. count ( 'a') c = 'IFRN '. lower () d = 'natal '. upper () e = 'Casa '. replace ('a','@') f = ' Engenharia de Software '. split () Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

14 Tipo Lógico Definição Representa dois estados: verdadeiro e falso. Exemplos a = b = True False Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

15 Operações com Tipo Lógico not (Negação); and (E); or (Ou); Exemplos a = not True b = True and False c = True or False Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

16 Tipo Tupla Definição É uma sequência qualquer de objetos imutáveis separados por vírgulas, contidos entre parênteses. Exemplos nome_completo = ( 'João', 'da Silva ') Importante Não é possível aplicar operações em tuplas. Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

17 Tipo Lista Definição É uma sequência qualquer de objetos mutáveis separados por vírgulas, contidos entre colchetes. Exemplos l = [1, 1, 2, 3, 5, 8, 13, 21, 34] c = ['João', 'Pedro ', 'Maria ', 'Jos é'] matriz = [[2,3],[4,1]] Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

18 Operações com Tipo Lista append (Adiciona um item ao fim da lista); pop (Remove o item na posição dada e o devolve); e sort (Ordena os itens na própria). Exemplos a = [1, 1, 2] a. append (0) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

19 Tipo Conjunto Definição É uma coleção desordenada de elementos sem repetição. Exemplos vogais = set ([ 'a','e','i','o','u']) frutas = set ([ ' abacaxi ', 'uva ', ' laranja ', ' banana ']) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

20 Operações com Conjunto in (Verifica se um elemento existe); union (União entre os conjuntos); intersection (Interseção entre os conjuntos); e difference (Diferença entre os conjuntos). Exemplos a = set ([2,3,5,7,11]) b = set ([2,4,6,8]) a. union (b) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

21 Tipo Dicionário Definição É uma coleção de elementos indexadas por chaves. Exemplos uf = {'al ': ' Alagoas ', 'ce ': 'Cear á', 'rn ':'Rio Grande do Norte '} Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

22 Operações com Dicionários keys (Retorna um lista com as chaves); values (Retorna um lista com os valores); update (Autaliza o dicionário); e pop (Remove o item da chava dada e o devolve o valor). Exemplos uf = {'al ': ' Alagoas ', 'ce ': 'Cear á', 'rn ':'Rio Grande do Norte '} uf. update ({ 'sp ':'São Paulo '}) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

23 Ementa do Curso 1 Introdução 2 Tipo de Dados 3 Ordenação 4 Lista 5 Pilha 6 Fila 7 Árvore Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

24 Ordenação Definição Uma ordenação consiste em colocar os elementos de um conjunto de dados de forma organizada (ascendente ou descendente) de acordo seus valores. Dentre as técnicas de ordenação mais conhecidas, temos: Ordenação por inserção (Insert Sort); Ordenação por seleção (Select Sort); Ordenação por flutuação (Bubble Sort); Ordenação por mistura (Merge Sort); e Ordenação rápida (Quick Sort). Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

25 Ordenação por Inserção Eficiente quando aplicado a um pequeno número de elementos; Percorre um vetor de elementos da esquerda para a direita; À medida que avança vai deixando os elementos mais à esquerda ordenados; e Exemplo Assemelha-se a ordenação de cartas de um jogo de baralho. valores = [5, 8, 9, 2, 1] for i in range (1, len ( valores )): aux = valores [i] j = i while (j > 0) and ( aux < valores [j -1]): valores [j] = valores [j - 1] j -= 1 valores [j] = aux print ( valores ) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

26 Ordenação por Seleção Baseado em passar sempre o menor valor do vetor para a primeira posição; Exemplo Depois o de segundo menor valor para a segunda posição; e Assim é feito sucessivamente com os (n 1) elementos restantes. valores = [5, 8, 9, 2, 1] for i in range (0, len ( valores ) - 1): index_menor = i for j in range (i + 1, len ( valores )): if valores [j] < valores [ index_menor ]: index_menor = j if valores [ index_menor ] < valores [i]: valores [i], valores [ index_menor ] = valores [ index_menor ], valores [i] print ( valores ) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

27 Ordenação por Flutuação A ideia é percorrer o vector diversas vezes; A cada passagem fazendo flutuar para o topo o maior elemento da sequência; e Essa movimentação lembra a forma como as bolhas em um tanque de água procuram seu próprio nível. Exemplo valores = [5, 8, 9, 2, 1] for i in range (len ( valores ) - 1, 0, -1): for j in range (0, i): if ( valores [j] > valores [j + 1]): valores [j], valores [j + 1] = valores [j + 1], valores [j] print ( valores ) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

28 Ordenação por Mistura Do tipo dividir-para-conquistar; Dividir: Dividir os dados em subsequências pequenas; e Conquistar: Classificar as metades recursivamente aplicando o merge sort. Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

29 Ordenação por Mistura Exemplo def merge_sort ( lista ): if len ( lista ) > 1: centro = len ( lista ) // 2 sublista_esquerda = lista [: centro ] sublista_direita = lista [ centro :] merge_sort ( sublista_esquerda ) merge_sort ( sublista_direita ) i = j = k = 0 while i < len ( sublista_esquerda ) and j < len ( sublista_direita ): if sublista_esquerda [i] < sublista_direita [j]: lista [k]= sublista_esquerda [i] i += 1 else : lista [k]= sublista_direita [j] j += 1 k += 1 while i < len ( sublista_esquerda ): lista [k]= sublista_esquerda [i] i += 1 k += 1 while j < len ( sublista_direita ): lista [k]= sublista_direita [j] j += 1 k += 1 Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

30 Ordenação por Mistura Exemplo valores = [5, 8, 9, 2, 1] merge_sort ( valores ) print ( valores ) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

31 Ordenação Rápida Escolha um elemento da lista, denominado pivô; Rearranje a lista de forma que todos os elementos anteriores ao pivô sejam menores que ele; Ao fim do processo o pivô estará em sua posição final e haverá duas sublistas não ordenadas; e Recursivamente ordena as sublistas de elementos menor e a maior. Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

32 Ordenação Rápida Exemplo def quick_sort ( lista, index_inicio=none, index_fim=none ): if index_inicio == None and index_fim == None : index_inicio = 0 index_fim = len ( lista ) - 1 pivo = lista [( index_inicio + index_fim ) // 2] i = index_inicio j = index_fim while i < j: while lista [i] < pivo : i += 1 while lista [j] > pivo : j -= 1 if i < j: lista [i], lista [j] = lista [j], lista [i] i += 1 j -= 1 if j > index_inicio : quick_sort ( lista, index_inicio, j) if i < index_fim : quick_sort ( lista, j+1, index_fim ) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

33 Ordenação Rápida Exemplo valores = [5, 8, 9, 2, 1] quick_sort ( valores ) print ( valores ) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

34 Ementa do Curso 1 Introdução 2 Tipo de Dados 3 Ordenação 4 Lista 5 Pilha 6 Fila 7 Árvore Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

35 Lista Ligada Definição É uma estrutura de dados que implementa uma coleção de dados ligados (encadeados) de forma dinâmica em um único sentido. Ilustração Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

36 Classe Elemento Código class Elemento : def init (self, nome ): self. nome = nome self. proximo = None Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

37 Classe Lista Ligada Código class ListaLigada : def init ( self ): self. inicio = None Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

38 Método para Adicionar Código def adicionar (self, nome ): novo = Elemento ( nome ) if self. inicio == None : self. inicio = novo else : elemento = self. inicio while elemento. proximo!= None : elemento = elemento. proximo elemento. proximo = novo Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

39 Método para Exibir Código def exibir ( self ): elemento = self. inicio print ( elemento.nome ) while elemento. proximo!= None : elemento = elemento. proximo print ( elemento.nome ) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

40 Método para Remover Código def remover (self, nome ): elemento = self. inicio if elemento. nome == nome : self. inicio = elemento. proximo else : while elemento. proximo!= None : if elemento. proximo.nome == nome : elemento. proximo = elemento. proximo. proximo else : elemento = elemento. proximo Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

41 Usando Lista Ligada Código lista = ListaLigada () lista. adicionar ( 'João') lista. adicionar ( 'Pedro ') lista. adicionar ( ' Marcos ') lista. adicionar ( 'Lucas ') lista. remover ( 'Pedro ') lista. exibir () Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

42 Listas Duplamente Ligada Definição É uma estrutura de dados que implementa uma coleção de dados ligados de forma dinâmica em sentido duplo. Duplamente Ligada Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

43 Classe Elemento Código class Elemento : def init (self, nome ): self. anterior = None self. nome = nome self. proximo = None Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

44 Classe Lista Duplamente Ligada Código class ListaDuplamenteLigada : def init ( self ): self. inicio = None Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

45 Método para Adicionar Código def adicionar (self, nome ): novo = Elemento ( nome ) if self. inicio == None : self. inicio = novo else : elemento = self. inicio while elemento. proximo!= None : elemento = elemento. proximo elemento. proximo = novo novo. anterior = elemento Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

46 Método para Exibir Código def exibir ( self ): elemento = self. inicio print ( elemento.nome ) while elemento. proximo!= None : elemento = elemento. proximo print ( elemento.nome ) while elemento. anterior!= None : elemento = elemento. anterior print ( elemento.nome ) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

47 Método para Remover Código def remover (self, nome ): elemento = self. inicio if elemento. nome == nome : self. inicio = elemento. proximo self. inicio. anterior = None else : elemento = elemento. proximo while elemento!= None : if elemento. nome == nome : if elemento. proximo!= None : elemento. anterior. proximo = elemento. proximo elemento. proximo. anterior = elemento. anterior else : elemento. anterior. proximo = None elemento = elemento. proximo Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

48 Usando Lista Duplamente Ligada Código lista = ListaDuplamenteLigada () lista. adicionar ( 'João') lista. adicionar ( 'Pedro ') lista. adicionar ( ' Marcos ') lista. adicionar ( 'Lucas ') lista. remover ( 'Pedro ') lista. exibir () Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

49 Lista Circular Definição É uma estrutura de dados que implementa uma coleção de dados ligados de forma dinâmica em um único sentido, no qual o final da lista corresponde o início da própria lista. Circular Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

50 Método para Adicionar Código def adicionar (self, nome ): novo = Elemento ( nome ) if self. inicio == None : self. inicio = novo novo. proximo = self. inicio else : elemento = self. inicio while elemento. proximo.nome!= self. inicio.nome : elemento = elemento. proximo elemento. proximo = novo novo. proximo = self. inicio Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

51 Método para Exibir Código def exibir ( self ): elemento = self. inicio print ( elemento.nome ) while elemento. proximo.nome!= self. inicio.nome : elemento = elemento. proximo print ( elemento.nome ) print ( elemento. proximo.nome ) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

52 Método para Remover Código def remover (self, nome ): elemento = self. inicio if elemento. nome == nome : self. inicio = elemento. proximo while elemento. proximo.nome!= nome : elemento = elemento. proximo elemento. proximo = self. inicio else : while elemento. proximo.nome!= nome : elemento = elemento. proximo elemento. proximo = elemento. proximo. proximo Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

53 Usando Lista Circular Código lista = ListaCircular () lista. adicionar ( 'João') lista. adicionar ( 'Pedro ') lista. adicionar ( ' Marcos ') lista. adicionar ( 'Lucas ') lista. remover ( 'João') lista. exibir () Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

54 Ementa do Curso 1 Introdução 2 Tipo de Dados 3 Ordenação 4 Lista 5 Pilha 6 Fila 7 Árvore Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

55 Pilha Definição É uma estrutura de dados baseada no princípio LIFO (Last In, First Out), na qual os dados que foram inseridos primeiros na pilha serão os últimos a serem removidos. Ilustração Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

56 Classe Pilha Código class Pilha : def init ( self ): self. topo = None Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

57 Método para Empilhar Código def empilhar (self, nome ): novo = Elemento ( nome ) if self. topo == None : self. topo = novo else : novo. proximo = self.topo self. topo = novo Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

58 Método para Desempilhar Código def desempilhar ( self ): if self. topo == None : return None else : elemento = self. topo self.topo = elemento. proximo return elemento. nome Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

59 Exemplo Código pilha = Pilha () pilha. empilhar ( 'João') pilha. empilhar ( 'Lucas ') pilha. empilhar ( 'Pedro ') pilha. empilhar ( 'Maria ') nome = pilha. desempilhar () print ( nome ) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

60 Ementa do Curso 1 Introdução 2 Tipo de Dados 3 Ordenação 4 Lista 5 Pilha 6 Fila 7 Árvore Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

61 Fila Definição É uma estrutura de dados baseada 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. Ilustração Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

62 Classe Fila Código class Fila : def init ( self ): self. inicio = None Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

63 Método para Enfileirar Código def enfileirar (self, nome ): novo = Elemento ( nome ) if self. inicio == None : self. inicio = novo else : elemento = self. inicio while elemento. proximo!= None : elemento = elemento. proximo elemento. proximo = novo Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

64 Método para Desenfileirar Código def desenfileirar ( self ): if self. inicio == None : return None else : elemento = self. inicio self. inicio = elemento. proximo return elemento. nome Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

65 Usando Fila Código fila = Fila () fila. enfileirar ( 'João') fila. enfileirar ( 'Pedro ') fila. enfileirar ( 'Lucas ') fila. enfileirar ( 'Maria ') nome = fila. desenfileirar () print ( nome ) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

66 Fila com Prioridade Definição É uma estrutura de dados em que os elementos são inseridos em ordem de prioridade. Ilustração Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

67 Classe Elemento Código class Elemento : def init (self,nome, prioridade ): self. nome = nome self. prioridade = prioridade self. proximo = None Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

68 Classe Fila com Prioridade Código class FilaPrioridade : def init ( self ): self. inicio = None Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

69 Método para Enfileirar Código def enfileirar (self,nome, prioridade ): novo = Elemento (nome, prioridade ) if self. inicio == None : self. inicio = novo elif self. inicio. prioridade >= novo. prioridade : novo. proximo = self. inicio self. inicio = novo else : elemento = self. inicio while ( elemento. proximo!= None and elemento. proximo. prioridade < novo. prioridade ): elemento = elemento. proximo novo. proximo = elemento. proximo elemento. proximo = novo Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

70 Método para Desenfileirar Código def desenfileirar ( self ): if self. inicio == None : return None else : elemento = self. inicio self. inicio = elemento. proximo return elemento. nome Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

71 Usando Fila Código fila = FilaPrioridade () fila. enfileirar ( 'João', 3) fila. enfileirar ( 'Pedro ', 2) fila. enfileirar ( 'Lucas ', 1) fila. enfileirar ( 'Maria ', 0) nome = fila. desenfileirar () print ( nome ) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

72 Ementa do Curso 1 Introdução 2 Tipo de Dados 3 Ordenação 4 Lista 5 Pilha 6 Fila 7 Árvore Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

73 Árvore Definição É uma estrutura de dados em que cada elemento tem um ou mais elementos associados. Ilustração Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

74 Classe Nó Código class No: def init (self, valor ): self. valor = valor self. ramoesquerdo = None self. ramodireito = None Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

75 Classe Árvore Binária Código class ArvoreBinaria : def init ( self ): self. raiz = None Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

76 Inserir Nó Ilustração Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

77 Método Inserir Código def inserir (self, valor ): if self. raiz == None : self.raiz = No( valor ) else : self. inserir (valor, self.raiz ) def inserir (self, valor, no ): if no. valor > valor : if no. ramoesquerdo == None : no. ramoesquerdo = No( valor ) else : self. inserir (valor, no. ramoesquerdo ) else : if no. ramodireito == None : no. ramodireito = No( valor ) else : self. inserir (valor, no. ramodireito ) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

78 Excluir um Nó Folha Ilustração Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

79 Excluir um Nó com uma Subárvore Ilustração Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

80 Excluir um Nó com duas Subárvores Ilustração: Caso 1 Ilustração: Caso 2 Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

81 Método Excluir Código def remover (self, valor ): self. remover (None, self.raiz, valor ) def remover (self, no_pai, no, valor ): if no!= None : if no. valor!= valor : if no. valor > valor : self. remover (self, no, no. ramoesquerdo, valor ) else : self. remover (self, no, no. ramodireito, valor ) else : # Remover nó folha if no. ramoesquerdo == None and no. ramodireito == None : if no. valor == self.raiz. valor : self. raiz = None elif no_pai. ramodireito. valor == no. valor : no_pai. ramodireito = None else : no_pai. ramoesquerdo = None Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

82 Método Excluir Código # Remover nó com uma sub á rvore elif no. ramoesquerdo == None or no. ramodireito == None : if no. ramoesquerdo == None : if no. valor == self.raiz. valor : self.raiz = no. ramodireito elif no_pai. ramoesquerdo. valor == no. valor : no_pai. ramoesquerdo = no. ramodireito else : no_pai. ramodireito = no. ramodireito else : if no. valor == self.raiz. valor : self.raiz = no. ramoesquerdo elif no_pai. ramoesquerdo == no. valor : no_pai. ramoesquerdo = no. ramoesquerdo else : no_pai. ramodireito = no. ramoesquerdo Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

83 Método Excluir Código # Remover nó com duas sub á rvores else : nodo = no. ramoesquerdo anterior = no while nodo. ramodireito!= None : anterior = nodo nodo = nodo. ramodireito if nodo. ramoesquerdo == None : anterior. ramodireito = None # É uma folha else : anterior. ramodireito = nodo. ramoesquerdo if no. valor == self.raiz. valor : self. raiz = nodo nodo. ramoesquerdo = no. ramoesquerdo nodo. ramodireito = no. ramodireito elif no_pai. ramoesquerdo. valor == no. valor : no_pai. ramoesquerdo = nodo else : no_pai. ramodireito = nodo Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

84 Usando Árvore Código arvore = ArvoreBinaria () arvore. inserir (7) arvore. inserir (4) arvore. inserir (9) arvore. inserir (2) arvore. inserir (5) arvore. inserir (10) arvore. inserir (8) Diego S. C. Nascimento (IFRN) Estrutura de Dados 31 de agosto de / 84

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Segundo Teste 10 de Janeiro de 2014 09:00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 8 páginas com 12 perguntas. A cotação de cada pergunta está assinalada

Leia mais

Linguagem Python. Processamento Estatístico da Linguagem Natural. Barra invertida em strings. Strings. Aspas triplas. Operações com Strings

Linguagem Python. Processamento Estatístico da Linguagem Natural. Barra invertida em strings. Strings. Aspas triplas. Operações com Strings Processamento Estatístico da Linguagem Natural Aula 7 Professora Bianca (Sala 302 Bloco E) bianca@ic.uff.br http://www.ic.uff.br/~bianca/peln/ Linguagem Python Introdução Características de Python Rodando

Leia mais

Algoritmos e Estrutura de Dados Aula 08 Pilhas

Algoritmos e Estrutura de Dados Aula 08 Pilhas Algoritmos e Estrutura de Dados Aula 08 Pilhas Profa. Alana Oliveira e Prof. Davi Viana alanaslz@gmail.com e davi.viana@lsdi.ufma.br Se não entender, pergunte! Dados e Tipos de Dados Um dado é uma informação

Leia mais

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Listas e Filas Estruturas de Dados 2 Estrututuras de dados lineares Pilhas (stack) Estrutura de dados onde a inserção

Leia mais

Módulo: PYTHON. Felipe Oliveira

Módulo: PYTHON. Felipe Oliveira Módulo: PYTHON Felipe Oliveira Tudo Blzinha? https://pip.pypa.io/en/stable/installing/ Ctrl + S Variáveis Palavras reservadas! Operadores Aritméticos Operadores básicos Operação Operador adição +

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

Algoritmos e Estrutura de Dados Aula 02 Listas em Python

Algoritmos e Estrutura de Dados Aula 02 Listas em Python Algoritmos e Estrutura de Dados Aula 02 Listas em Python Profa. Alana Oliveira e Prof. Davi Viana alanaslz@gmail.com e davi.viana@lsdi.ufma.br Se não entender, pergunte! 2 1 Dados e Tipos de Dados Um dado

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

Estruturas de Dados em Python

Estruturas de Dados em Python Estruturas de Dados em Python Carlos Camarão de Março de 7 Introdução Na segunda parte do curso vamos aprender a programar com estruturas (ou coleções) de dados, em Python. Python é uma linguagem orientada

Leia mais

Estrutura de Dados: Aula 3 - Linguagem C

Estrutura de Dados: Aula 3 - Linguagem C Estrutura de Dados: Aula 3 - Linguagem C Uso de Memória Alocação de memória Estática Ocorre em tempo de compilação no momento em que se define uma variável ou estrutura é necessário que se definam seu

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

Estruturas de Dados Pilhas, Filas, Listas

Estruturas de Dados Pilhas, Filas, Listas Estruturas de Dados Pilhas, Filas, Listas Fabio Gagliardi Cozman Thiago Martins PMR3201 Escola Politécnica da Universidade de São Paulo Estruturas de Dados Pilhas, Filas, Listas Introdução Estruturas de

Leia mais

Aula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler

Aula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler Aula 7 e 8 Filas e suas Aplicações Prof. Leticia Winkler 1 Definição de Fila (Queue) São estruturas de dados do tipo FIFO (first-in first-out) - o primeiro elemento a ser inserido, será o primeiro a ser

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

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Segundo Teste 18 de Junho de 2014 15:00 16:30 1. (1.0) Diga quais as fases por que passa o desenvolvimento de um programa no modelo estudado e o que se faz em cada uma delas.

Leia mais

Bit (Binary Digit) é a menor unidade de armazenamento de informação dentro do computador; Byte é a união de 8 bits capaz de representar 256

Bit (Binary Digit) é a menor unidade de armazenamento de informação dentro do computador; Byte é a união de 8 bits capaz de representar 256 Bit (Binary Digit) é a menor unidade de armazenamento de informação dentro do computador; Byte é a união de 8 bits capaz de representar 256 informações diferentes; Tipos Primitivos são implementados nas

Leia mais

S U M Á R I O. Definição de Estrutura de Dados. Vetores. Listas Ligadas. Pilhas. Filas

S U M Á R I O. Definição de Estrutura de Dados. Vetores. Listas Ligadas. Pilhas. Filas ESTRUTURA DE DADOS DEBORAH FERREIRA S U M Á R I O Definição de Estrutura de Dados 1 Vetores 2 Listas Ligadas 4 Pilhas 6 Filas 8 D E F I N I Ç Ã O D E E S T R U T U R A D E D A D O S Estruturas de dados

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 e estrutura de dados

Algoritmos e estrutura de dados Algoritmos e estrutura de dados Listas Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. Conteúdo Listas Listas encadeadas

Leia mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Pilhas e listas Estruturas de Dados 2 Ordenação (Classificação) Rearranjar um conjunto de objetos Ordem ascendente

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 e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1

Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1 Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) PIP/CA - Programa Interdisciplinar de Pós-Graduação

Leia mais

Aula de hoje. Listas. Sequências especiais. Introdução. Listas. Sequências. SCC Introdução à Programação para Engenharias

Aula de hoje. Listas. Sequências especiais. Introdução. Listas. Sequências. SCC Introdução à Programação para Engenharias SCC 12 - Introdução à Programação para Engenharias Aula de hoje Introdução Sequências Classes e objetos Listas Listas Operações em listas Pilhas e filas Professor: André C. P. L. F. de Carvalho, ICMC-USP

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

Fundamentos de Programação em Python

Fundamentos de Programação em Python Fundamentos de Programação em Python Diego Silveira Costa Nascimento Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte diego.nascimento@ifrn.edu.br 23 de junho de 2017 Ementa do

Leia mais

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra

Leia mais

Pilhas. ser acessada somente por uma de suas extremidades. pelo topo. S Uma pilha é uma estrutura linear de dados que pode

Pilhas. ser acessada somente por uma de suas extremidades. pelo topo. S Uma pilha é uma estrutura linear de dados que pode Pilhas e Filas Pilhas Uma pilha é uma estrutura linear de dados que pode ser acessada somente por uma de suas extremidades. Uma pilha é uma lista LIFO (do inglês last-in-first out) o último a entrar é

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

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

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

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

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Solução do Segundo Teste 18 de Janeiro de 2013 09:00 10:30 1. (2.0) Escolha a única resposta incorrecta para as seguintes questões. Cada resposta certa vale 1 valor e cada resposta

Leia mais

Prova de Recuperação PMR3201 1o. semestre 2017 Prof. Thiago Martins

Prova de Recuperação PMR3201 1o. semestre 2017 Prof. Thiago Martins Prova de Recuperação PMR3201 1o. semestre 2017 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.

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 Alocação sequencial Listas lineares,

Leia mais

Sequências - Tuplas. Sequências - Tuplas

Sequências - Tuplas. Sequências - Tuplas Sequências - Tuplas Sequência de valores separados por vírgulas. Elementos podem ser de tipos distintos. Endereçáveis, com índice 0 para o primeiro elemento Exemplos : >>> tupla="computadores e Programacao",

Leia mais

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

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

Python Listas e Strings. Listas 23/11/2016. Por que usar listas? Listas. Listas - Solução. Listas - Problema

Python Listas e Strings. Listas 23/11/2016. Por que usar listas? Listas. Listas - Solução. Listas - Problema Python Listas e Strings Prof. Paulo Henrique Ribeiro Gabriel (Com base no material do Prof. André Backes) Listas Por que usar listas? Listas As variáveis declaradas até agora são capazes de armazenar um

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

Capítulo 8: Abstrações de dados

Capítulo 8: Abstrações de dados Capítulo 8: Abstrações de dados Ciência da computação: Uma visão abrangente 11a Edition by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Estruturas de dados básicas Matriz homogênea Matriz

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

Aula 5 e 6 Pilhas e suas Aplicações. prof Leticia Winkler

Aula 5 e 6 Pilhas e suas Aplicações. prof Leticia Winkler Aula 5 e 6 Pilhas e suas Aplicações prof Leticia Winkler 1 Definição de Pilha (Stack) São estruturas de dados do tipo LIFO (last-in first-out) - o último elemento a ser inserido, será o primeiro a ser

Leia mais

Árvores. Estruturas de Dados. Prof. Vilson Heck Junior

Árvores. Estruturas de Dados. Prof. Vilson Heck Junior Árvores Estruturas de Dados Prof. Vilson Heck Junior Árvores INTRODUÇÃO Introdução Árvores são estruturas de dados utilizadas para armazenar e recuperar dados de forma rápida e eficiente; Árvores não são

Leia mais

Prof. Jesus José de Oliveira Neto

Prof. Jesus José de Oliveira Neto Prof. Jesus José de Oliveira Neto É uma das estruturas de dados mais simples A idéia fundamental da pilha é que todo o acesso a seus elementos é feito através do seu topo. Assim, quando um elemento novo

Leia mais

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias SCC 12 - Introdução à Programação para Engenharias Tipos de Dados e Variáveis Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes

Leia mais

Computação 1 - Python Aula 10 - Teórica: Estrutura de Dados - Dicionário. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 18

Computação 1 - Python Aula 10 - Teórica: Estrutura de Dados - Dicionário. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 18 Computação 1 - Python Aula 10 - Teórica: Estrutura de Dados - 1/ 18 Considere que você precisa fazer uma função que guarde o nome e o telefone de seus amigos. Sua função também deve permitir a consulta

Leia mais

Informática Parte 18 Prof. Márcio Hunecke

Informática Parte 18 Prof. Márcio Hunecke Escriturário Informática Parte 18 Prof. Márcio Hunecke Informática ORDENAÇÃO (MÉTODOS DA BOLHA, ORDENAÇÃO POR SELEÇÃO, ORDENAÇÃO POR INSERÇÃO, LISTA ENCADEADA, PILHA, FILA, NOÇÕES SOBRE ÁRVORE BINÁRIA)

Leia mais

ESTRUTURA DE DADOS (TCC )

ESTRUTURA DE DADOS (TCC ) ESTRUTURA DE DADOS (TCC-00.319) Listas lineares Cristina Boeres 2 Estrutura de Dados! Listas lineares! estática! dinâmicas! Como manipulá-las:! pilhas! filas Listas Lineares 3! fácil manipulação! agrupa

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

Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler

Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler Aula 3 Listas Lineares Sequenciais Ordenadas prof Leticia Winkler 1 Listas Lineares Sequenciais Ordenadas Elementos da lista estão dispostos num vetor (contíguos na memória) e ordenado de acordo com alguma

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

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 13: Ordenação: MergeSort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes Email: reifortes@iceb.ufop.br

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

ALGORITMOS DE ORDENAÇÃO RECURSIVOS

ALGORITMOS DE ORDENAÇÃO RECURSIVOS 1/14 ALGORITMOS DE ORDENAÇÃO RECURSIVOS Ordenação rápida ( Quicksort ) 2/14 Ordenação rápida ( Quicksort ) Ideia - Baseia-se num princípio muito simples que, quando aplicado recursivamente, acaba por ordenar

Leia 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

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

Ordenação: MergeSort. Prof. Túlio Toffolo  BCC202 Aula 14 Algoritmos e Estruturas de Dados I Ordenação: MergeSort Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 14 Algoritmos e Estruturas de Dados I DIVISÃO E CONQUISTA Motivação É preciso revolver um problema com uma entrada grande

Leia mais

Estruturas de Dados Filas

Estruturas de Dados Filas Estruturas de Dados Filas Roteiro Introdução Definição de Fila (Queue) Aplicações Operações sobre Fila Implementação de Fila Com vetores Com listas encadeadas Exercícios Introdução Estamos acostumados

Leia mais

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira. Algoritmos e Estrutura de Dados II Árvore Prof a Karina Oliveira kkco@dei.unicap.br Introdução Estruturas de dados lineares (pilha, fila) são estruturas que guardam coleções de elementos que são acessados

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

Filas de prioridade. Marcelo K. Albertini. 3 de Dezembro de 2013

Filas de prioridade. Marcelo K. Albertini. 3 de Dezembro de 2013 Filas de prioridade Marcelo K. Albertini de Dezembro 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

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

Linguagem Python. Inteligência Artificial. Características de Python. Importando módulos. Módulos. Usando Python no modo interativo

Linguagem Python. Inteligência Artificial. Características de Python. Importando módulos. Módulos. Usando Python no modo interativo Linguagem Python Inteligência Artificial Aula 7 Profª Bianca Zadrozny http://www.ic.uff.br/~bianca/ia Introdução Características de Python Rodando programas Módulos Tipos básicos Números e variáveis Strings

Leia mais

MÉTODOS DE CLASSIFICAÇÃO EM MEMÓRIA PRIMÁRIA. George Gomes Cabral

MÉTODOS DE CLASSIFICAÇÃO EM MEMÓRIA PRIMÁRIA. George Gomes Cabral MÉTODOS DE CLASSIFICAÇÃO EM MEMÓRIA PRIMÁRIA George Gomes Cabral MÉTODOS DE CLASSIFICAÇÃO EM MEMÓRIA PRIMÁRIA Métodos Elementares Classificação por Trocas Método da Bolha Bubblesort Método de Partição

Leia mais

Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Análise e Síntese de Algoritmos Revisão [CLRS, Cap. 7-10] 2014/2015 Contexto Revisão [CLRS, Cap.1-13] Fundamentos; notação; exemplos Algoritmos em Grafos [CLRS, Cap.21-26] Algoritmos elementares Árvores

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

Ordenação por Seleção Métodos de Ordenação Parte 3

Ordenação por Seleção Métodos de Ordenação Parte 3 Ordenação por Seleção Métodos de Ordenação Parte SCC-6 Introdução à Ciência da Computação II Rosane Minghim Idéia básica: os elementos são selecionados e dispostos em suas posições corretas Seleção direta

Leia mais

1. Listas sequenciais versus listas ligadas. Lista sequencial

1. Listas sequenciais versus listas ligadas. Lista sequencial Alocação Dinâmica Listas Ligadas 1. Listas sequenciais versus listas ligadas Lista sequencial Uma lista sequencial é um conjunto de elementos contíguos na memória. Um vetor é o melhor exemplo de lista

Leia mais

Capítulo 20. Estruturas de Dados Dinâmicas. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Capítulo 20. Estruturas de Dados Dinâmicas. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Capítulo 20 Estruturas de Dados Dinâmicas Objetivos do Capítulo Caracterizar as estruturas de dados dinâmicas. Apresentar implementações para três diferentes estruturas de dados: as pilhas, as filas e

Leia mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Métodos de pesquisa e classificação de dados (continuação) Estruturas de Dados 2 Algoritmo de busca Recebe como argumento

Leia mais

Listas, conjuntos e dicionários

Listas, conjuntos e dicionários Listas, conjuntos e dicionários Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

Leia mais

Capacitação em Linguagem C Parte 2

Capacitação em Linguagem C Parte 2 Capacitação em Linguagem C Parte 2 Andrey Souto Maior Giuseppe Portolese Universidade Estadual de Maringá - Centro de Tecnologia Departamento de Informática 22 de outubro de 2015 Sumário I Tipos abstratos

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

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

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins Prova PMR0 o semestre 0 Prof Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço ( pontos) Uma árvore binária de busca é uma árvore binária na qual para qualquer sub-árvore

Leia mais

Análise e Síntese de Algoritmos. Revisão CLRS, Cap. 7-10

Análise e Síntese de Algoritmos. Revisão CLRS, Cap. 7-10 Análise e Síntese de Algoritmos Revisão CLRS, Cap. 7-10 Contexto Revisão Algoritmos e complexidade Notação Fundamentos: somatórios, recorrências, etc. Exemplos de algoritmos Ordenação Procura Selecção

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Solução do Primeiro Teste 29 de Março de 2014 09:00 10:30 1. (1.0) O que é um processo computacional? Qual a relação entre um programa e um processo computacional? Um processo

Leia mais

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO Dados em Algoritmos Quando escrevemos nossos programas, trabalhamos com: Dados que nós fornecemos ao programa Dados

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

Listas e Tuplas. Vanessa Braganholo

Listas e Tuplas. Vanessa Braganholo Listas e Tuplas Vanessa Braganholo vanessa@ic.uff.br Exemplo Motivacional } Programa para auxiliar a escrever Parabéns! nas melhores provas de uma disciplina com 3 alunos } Ler os nomes e as notas de 3

Leia mais

Programação Introdução

Programação Introdução PROGRAMAÇÃO Programação Introdução Prof. Dr. Adriano Mauro Cansian 1 Introdução Para armazenar um algoritmo na memória de um computador e para que ele possa, em seguida, comandar as operações a serem executadas,

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

Compiladores. Análise Léxica

Compiladores. Análise Léxica Compiladores Análise Léxica Cristiano Lehrer, M.Sc. Introdução (1/3) Análise léxica é a primeira fase do compilador. A função do analisador léxico, também denominado scanner, é: Fazer a leitura do programa

Leia mais

AVALIAÇÃO DE CONHECIMENTO ESPECÍFICO

AVALIAÇÃO DE CONHECIMENTO ESPECÍFICO AVALIAÇÃO DE CONHECIMENTO ESPECÍFICO PROGRAMA DE PÓS- GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO 01. Toda arvore binária possui as seguintes propriedades: I. Todos os nós de uma sub- árvore direita são maiores

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

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

Algoritmos e estrutura de dados

Algoritmos e estrutura de dados Algoritmos e estrutura de dados Introdução Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. Conteúdo A linguagem Python

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

ALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão

ALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 3.1 - Definição 3.2 - Dividir para conquistar 3.3 - Problema da

Leia 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

Plano de Aula - Lógica de Programação - cód Horas/Aula

Plano de Aula - Lógica de Programação - cód Horas/Aula Plano de Aula - Lógica de Programação - cód. 6133-16 Horas/Aula Aula 1 Capítulo 1 - Introdução Aula 2 Continuação do Capítulo 1 - Introdução Capítulo 2 - Diagrama de Bloco Aula 3 Capítulo 3 - Dados Capítulo

Leia mais

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação Ederson Luiz da Silva Ciência da Computação Algoritmos e Programação Linguagem de programação Linguagem de Programação Linguagem de máquina http://www.assemblyprogressivo.net/p/curso.html Linguagem de

Leia mais

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira Árvores SCC-202 Algoritmos e Estruturas de Dados I Lucas Antiqueira Listas e árvores Listas lineares Um nó após o outro, adjacentes Nó sucessor e antecessor Diversas aplicações necessitam de estruturas

Leia mais

Introdução à Programação / Programação I

Introdução à Programação / Programação I Introdução à Programação / Programação I Aula 9: Cadeias de caracteres Rita P. Ribeiro 2017/2018 Departamento de Ciência de Computadores Nesta aula 1. Cadeias de caracteres 2. Exemplo: a cifra de César

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

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula 3

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula 3 TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula 3 1 Agenda Estrategias de Projeto Algoritmos Refinamentos Sucessivos Força Bruta Dividir e conquistar Bibliografia

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

Introdução à Programação / Programação I

Introdução à Programação / Programação I Introdução à Programação / Programação I Aula 10: Listas e tuplos Rita P. Ribeiro 2017/2018 Departamento de Ciência de Computadores Nesta aula 1. Listas 2. Tuplos INTRODUÇÃO À PROGRAMAÇÃO / PROGRAMAÇÃ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

Introdução à Programação

Introdução à Programação Introdução à Programação Aula 10: Listas e tuplos Rita P. Ribeiro 2016/2017 Departamento de Ciência de Computadores Nesta aula 1. Listas 2. Tuplos INTRODUÇÃO À PROGRAMAÇÃO - 2016/2017: AULA 10 1 Listas

Leia mais

Variáveis, Tipos de Dados e Operadores

Variáveis, Tipos de Dados e Operadores ! Variáveis, Tipos de Dados e Operadores Engenharias Informática Aplicada 2.o sem/2013 Profa Suely (e-mail: smaoki@yahoo.com) VARIÁVEL VARIÁVEL É um local lógico, ligado a um endereço físico da memória

Leia mais