A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

INE 5384 Estruturas de Dados Prof a. Patrícia Vilain 2003.2.

Apresentações semelhantes


Apresentação em tema: "INE 5384 Estruturas de Dados Prof a. Patrícia Vilain 2003.2."— Transcrição da apresentação:

1 INE 5384 Estruturas de Dados Prof a. Patrícia Vilain 2003.2

2 Conteúdo 1. Introdução 2. Listas 3. Listas Ordenadas 4. Filas 5. Pilhas 6. Árvores Árvore Binária e Árvore AVL Árvore N-ária e Árvore B 7. Tabelas de Dispersão (Hashing) 8. Métodos de Ordenação de Dados

3 Listas Ordenadas

4 Lista Ordenada LISTA ORDENADA: lista linear na qual os elementos aparecem em ordem, ou seja, do menor para o maior. Inserção de um elemento em uma lista ordenada: pré-condição: lista já está ordenada. pós-condição: lista continua ordenada.

5 Exemplos de Listas Ordenadas Itens de um índice remissivo (ordenados pelo nome do item) Nomes dos alunos em uma lista de chamada (ordenados pelo nome do aluno) Nomes dos aprovados em um concurso público (ordenados pelo resultado da prova)

6 Características de uma Lista Ordenada seqüência finita de elementos Seqüência Finita de Elementos 8132045... 21

7 Características de uma Lista Ordenada Seqüência Finita de Elementos 8132045... 21 posição = 1 posição = 3

8 Características de uma Lista Ordenada Seqüência: próximo e anterior sucessor (próximo) predecessor (anterior) 8132045... 21

9 Características de uma Lista Ordenada Seqüência: início e fim início final 8132045... 21

10 Características de uma Lista Ordenada Comprimento Lista Vazia Comprimento = 5 Comprimento = 0 813204521

11 Operações sobre uma Lista Ordenada Inserção de elemento não é possível especificar a posição de inserção 8132045... 2115 8132045... 21155

12 Operações sobre uma Lista Ordenada Remoção de elemento 8132045... 21155 posição = 1 posição = 3 8132045... 21155 elemento = 20 8132045... 21155

13 Operações sobre uma Lista Ordenada Consulta Elemento da posição 2 8 Verificar se o elemento 20 está na lista true 8132045... 21155

14 Lista Ordenada Uma lista ordenada deve armazenar somente objetos que possam ser comparáveis. É necessário que o objeto tenha algum método para comparar se ele é menor, igual ou maior que outro objeto.

15 Alternativas de Implementação Lista Ordenada como Array Lista Ordenada como Lista Encadeada

16 Lista Ordenada como Array Os elementos, ordenados, ficam justapostos na memória através da utilização de um vetor unidimensional. 410326587 e5e5 e2e2 e1e1 e4e4 e3e3 e7e7 e6e6 emem... 9N

17 Lista Ordenada como Array Exemplo: 410326587 3013821204532 9N...

18 Lista Ordenada como Array Classe ListaOrdenadaArray implementa ListaOrdenada Atributos elementos (array com objetos Comparable) numeroElementos Métodos construtor () + métodos especificados na interface ListaOrdenada

19 Operações sobre a Lista Ordenada Exemplo: inserção do elemento 15 3013821204532 211382015323045

20 Operações sobre a Lista Ordenada Exemplo: exclusão do elemento 30 211382015323045 2113820154532

21 Lista Ordenada como Array public class ListaOrdenadaArray implements ListaOrdenada { private Comparable[] elementos; private int numElementos; private int aumento; public ListaOrdenadaArray (int tamanho) { this.elementos = new Comparable[tamanho]; this.numElementos = 0; this.aumento = tamanho / 10; } public ListaOrdenadaArray (int tamanho, int aumento) { this.elementos = new Comparable[tamanho]; this.numElementos = 0; this.aumento = aumento; }

22 PROFESSORA public void insere (Comparable elemento){ /** * Insere o objeto na lista ordenada. * A lista continua ordenada após a inserção do elemento */ if (this.numElementos == this.elementos.length){ Comparable[] novoArray = new Comparable[this.elementos.length + aumento]; System.arraycopy(elementos,0,novoArray,0,this.elementos.length); this.elementos = novoArray; } int cont = this.numElementos-1; while (cont >= 0 && elemento.compareTo(this.elementos[cont]) < 0){ this.elementos[cont+1] = this.elementos[cont]; cont--; } this.elementos[cont+1] = elemento; this.numElementos++; } Complexidade: O(N)

23 PROFESSORA public int retornaPosicao (Comparable elemento){ // SEM PESQUISA BINÁRIA /** * Retorna a primeira posicao do elemento, considerando * que a lista comeca na posicao 0. * Caso o elemento nao exista na lista, retorna -1. */ int cont = 0; while (cont<this.numElementos && this.elementos[cont].compareTo(elemento)<0) cont++; if (cont<this.numElementos && this.elementos[cont].compareTo(elemento)==0) return cont; else return -1; } Complexidade: O(N)

24 PROFESSORA public int retornaPosicao(Comparable elemento) { // COM PESQUISA BINÁRIA COM RECURSÃO return posicao (elemento, 0, this.numElementos-1); } private int posicao (Comparable elemento, int inicio, int fim){ if (fim < inicio) return -1; else { int meio = (inicio+fim) /2; if (this.elementos[meio].compareTo(elemento) == 0) //encontrou return meio; else if (this.elementos[meio].compareTo(elemento) > 0) //esta' na primeira parte return posicao (elemento,inicio,meio-1); else//esta' na segunda parte return posicao (elemento,meio+1,fim); } Complexidade: O(logN)

25 PROFESSORA public int retornaPosicao(Comparable elemento) { // COM PESQUISA BINÁRIA SEM RECURSÃO int fim = this.numElementos-1; int inicio = 0; while (inicio <= fim) { int meio = (inicio+fim) /2; if (this.elementos[meio].compareTo(elemento) == 0) //encontrou return meio; else if (this.elementos[meio].compareTo(elemento) > 0) //esta' na primeira parte fim = meio - 1; else//esta' na segunda parte inicio = meio + 1; } return -1; } Complexidade: O(logN)

26 Lista Ordenada Encadeada Os elementos, ordenados, estão associados entre si através de elos. enen e2e2 e1e1...

27 Lista Ordenada Encadeada Exemplo 45323020 inicionumeroElementos 6 fim 138

28 Lista Ordenada Encadeada Classe ListaOrdenadaEncadeada implementa ListaOrdenada Atributos inicio (referência a objeto da classe NodoComparable) fim (referência a objeto da classe NodoComparable) numeroElementos Métodos construtor () + métodos especificados na interface ListaOrdenada

29 Lista Ordenada Encadeada Classe NodoComparable Atributos: elemento (Comparable) proximo (referência a um outro objeto da classe NodoComparable) enen elementopróximo

30 Lista Ordenada Encadeada Exemplo: inserção do elemento 15 45323020 inicionumeroElementos 6 fim 138 15

31 Lista Ordenada Encadeada Exemplo: exclusão do elemento 30 4532302015 inicionumeroElementos 7 fim 138

32 Lista Ordenada Encadeada public class ListaOrdenadaEncadeada implements ListaOrdenada { private NodoComparable inicio; private NodoComparable fim; private int numElementos; public ListaOrdenadaEncadeada() { this.inicio = null; this.fim = null; this.numElementos = 0; } … }

33 PROFESSORA public void insere (Comparable elemento){ /** * Insere o objeto na lista ordenada. * A lista continua ordenada após a inserção do elemento */ NodoComparable nodo = new NodoComparable (elemento); NodoComparable aponta = this.inicio; NodoComparable anterior = null; while (aponta != null && aponta.retornaElemento().compareTo(elemento)<0){ anterior = aponta; aponta = aponta.retornaProximo(); }... Complexidade: O(N)

34 PROFESSORA... if (aponta == this.inicio){ nodo.atribuiProximo(this.inicio); this.inicio = nodo; if (this.fim == null) this.fim = nodo; } else if (aponta == null){ //inserir no final da lista this.fim.atribuiProximo(nodo); this.fim = nodo; } else{ //inserir no meio da lista anterior.atribuiProximo(nodo); nodo.atribuiProximo(aponta); } this.numElementos++; }

35 PROFESSORA public int retornaPosicao (Comparable elemento){ /** * Retorna a primeira posicao do elemento, considerando * que a lista comeca na posicao 0. * Caso o elemento nao exista na lista, retorna -1. */ NodoComparable aponta = this.inicio; int cont = 0; while (aponta!=null && aponta.retornaElemento().compareTo(elemento)<0){ aponta = aponta.retornaProximo(); cont++; } if (aponta!=null && aponta.retornaElemento().compareTo(elemento)==0) return cont; else return -1; } Complexidade: O(N)


Carregar ppt "INE 5384 Estruturas de Dados Prof a. Patrícia Vilain 2003.2."

Apresentações semelhantes


Anúncios Google