Algoritmos de Ordenação

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

UFSC-CTC-INE INE Estruturas de Dados
Ordenação de Dados em Memória
Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo www. decom. ufop
Estruturas de Dados Marcio Gonçalves.
ESTRUTURA DE DADOS LES.
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
Linguagem de Programação IX Métodos de Ordenação
Algoritmos de Ordenação
Classificação de Dados
Série de Exercícios.
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
Pesquisa em Memória Primária
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
HeapSort Filas de Prioridade – Heap
Pesquisa em Memória Primária – Árvores de Busca
Medida do Tempo de Execução de um Programa
Pesquisa em Memória Primária – Árvores de Busca
Medida do Tempo de Execução de um Programa
David Menotti Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária
David Menotti Estruturas de Dados I DECOM – UFOP
FACENS – Engenharia da Computação Lógica Computacional II
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Classificação (Ordenação) de dados
Prof. Alexandre Parra Organização dos Dados Prof. Alexandre Parra
Algoritmos Escher.
Métodos de Classificação por Seleção: HeapSort
Método de Ordenação: InsertionSort
Métodos de Classificação por Seleção
Robson Godoi / Sandra Siebra
Listas Encadeadas.
Ordenação de Dados.
Algoritmos de Ordenação
Insertion Sort.
Conceitos básicos Algoritmo Usado para a solução de problemas
ALGORITMOS E ESTRUTURAS DE DADOS
Algoritmos de ordenação
Algoritmos e Estruturas de Dados II
Pesquisa em Memória Primária
Comparação entre os métodos de ordenação
Algoritmo de Ordenação
Ordenação em memória primária
Desempenho, Método de Shell, Quicksort
Complexidade de algoritmos e Classificação (Ordenação) de dados
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Listas de Prioridades Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade A prioridade associada a um dado pode ser qualquer.
Ceça Moraes – Introdução à Programação SI1
Procedimentos e Funções
Algoritmos de Ordenação
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Introdução à complexidade de algoritmos Luiz Gonzaga da Silveira Junior.
Aula 10 Algoritmos de Busca
Capítulo VI – Variáveis Indexadas 6.1 – A necessidade de variáveis indexadas 6.2 – Vetores e matrizes 6.3 – Aplicações com vetores numéricos 6.4 – Aplicações.
Prof. Hilton Cardoso Marins Junior
Métodos de Ordenação.
CLASSIFICAÇÃO DE DADOS
Aula Prática 12 Listas Encadeadas Monitoria
Classificação Ordenação de Dados
Programação II Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da Prof.
Classificação (Ordenação) de dados
USP – ICMC – SSC SSC0300 2º Semestre 2015
Classificação (Ordenação) de dados. Roteiro Contextualização e definições sobre Classificação Métodos de Classificação de Dados.
Campus Pau dos Ferros Disciplina de Algoritmos Prof. Demétrios Coutinho INFORMÁTICA BÁSICA Algoritmos de Ordenação.
Algoritmos com matrizes e vetores
Métodos de Pesquisa e Ordenação
Métodos de Pesquisa e Ordenação
Algoritmos de ordenação Estruturas avançadas de dados I
Transcrição da apresentaçã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 de um livro em uma biblioteca a cada livro é atribuída uma posição relativa a outros e portanto pode ser recuperado em um tempo hábil

Algoritmos de Ordenação Terminologia básica seqüência de n ítens ou elementos (registros) r[0], r[1], ……….r[n-1] a chave a[i] está associada ao elemento r[i] usualmente a chave é um campo do registro os elementos estão classificados pela chave se i < j então a[i] precede a[j] No exemplo do caderno de telefones o arquivo consiste de todas as entradas. Cada entrada é um registro, a chave na qual está sorteado é o nome do dono do telefone

Terminologia básica a ordenação tem por objetivo rearrumar as chaves de forma que obedeçam a uma regra (ex.: ordem numérica ou alfabética) se os elementos representam registros de um arquivo, sendo representado por uma lista sequencial em memória principal a ordenação é interna se o arquivo estiver em memória secundária a ordenação é externa

  Terminologia básica a ordenação pode ser por : contiguidade física, valor indireto de ordenação e encadeamento os algoritmos podem operar sobre o elemento ou sobre uma tabela de ponteiros registro é muito grande: ordenação indireta os registros não são rearrumados e sim os índices

Existe uma forte característica física no processo de ordenação, Contiguidade física: Existe uma forte característica física no processo de ordenação, Os elementos de um registro são movimentados de sua posição física original para sua nova posição

Não há movimentação das entradas das posições originais. Vetor indireto de ordenação: Não há movimentação das entradas das posições originais. A classificação é realizada com o apoio de um arquivo-índice. É esse arquivo que contém apontadores para os registros reais, os quais são mantidos classificados

Também não há a movimentação dos registros das posições originais. Encadeamento: Também não há a movimentação dos registros das posições originais. A ordem desejada é conseguida pelo uso de uma lista ligada. Coloca-se um campo a mais na tabela para permitir que o próximo registro seja identificado. É necessário utilizar um ponteiro para o primeiro elemento da lista ligada

Principais Métodos de Ordenação Interna Ordenação por inserção: Inserção direta Incrementos decrescentes (shell sort) Ordenação por troca Método da bolha ( buble sort) Método da troca e partição ( quicksort) Ordenação por seleção Seleção direta Seleção em árvore (heapsort)

Método da bolha - Bubble Sort Em cada passo cada elemento é comparado com o próximo Se o elemento estiver fora de ordem a troca é realizada Realizam-se tantos passos quantos forem necessários até que não ocorram mais trocas

Bubble Sort 2 6 3 5 7 9 2 3 5 6 7 9 2 6 3 5 7 9 2 3 5 6 7 9 2 3 6 5 7 9

Bubble Sort Não ocorreram trocas 2 3 5 6 7 9 2 3 5 6 7 9 2 3 5 6 7 9

Bubble Sort BUBBLESORT (V[], n) houveTroca = verdadeiro enquanto houveTroca for verdadeiro faça houveTroca = falso para i de 1 até n-1 faça se V[i] > V[i + 1] então troque V[i] e V[i + 1] de lugar e cab => 3 para 1, ==> abc ==> pgm acima deveria ter contador reinicializado a cada passada e um exit caso contador ficasse 0 Características de Performance dos 3 algoritmos seleção: gasta a maior parte do tempo para achar o mínimo na parte desordenada do array bubble sort: remaneja o máximo possível de objetos em cada estágio: gasta muito tempo impondo alguma ordem a parte restante do array.

void bubble(int v[], int qtd) { int i, aux; int trocou; trocou = 1; while (trocou) qtd--; trocou = 0; for(i = 0; i < qtd; i++) if(v[i] > v[i + 1]) aux=v[i]; v[i]=v[i+1]; v[i+1]=aux; }

Ordenação por Seleção Um dos algoritmos de classificação mais simples: ache primeiro o menor elemento da lista e troque sua posição com o primeiro elemento ache o segundo menor elemento e troque sua posição com o segundo elemento continue até que toda lista esteja ordenada para cada i de 0 a n-2, troca o menor elemento da sub-lista que vai de i a N-1 com a[i] Esse método é chamado de sort de seleção porque funciona selecionando repetidamente o menor elemento remanescente - ver exemplo da fig 8.1 o programa abaixo é a implementação desse processo:

Ordenação por Seleção 9 2 6 3 5 7 inicial Cada passo acha o menor e o coloca em sua posição 2 9 6 3 5 7 2 3 6 9 5 7 2 3 5 9 6 7 2 3 5 6 9 7 2 3 5 6 7 9

void selectionSort(int vetor[],int tam) { int i,j; int min,aux; for (i=0;i<tam-2;i++) min=i; for (j=i+1;j<tam-1;j++) if (vetor[j]<vetor[min]) min=j; } aux=vetor[i]; vetor[i]=vetor[min]; vetor[min]=aux;

Ordenação por Inserção Direta Um primeiro elemento está no vetor ordenado e os demais no vetor desordenado Retira-se o primeiro elemento do vetor desordenado. Ao colocá-lo no vetor ordenado, é realizada a devida comparação para inseri-lo na sua posição correta Repete-se o processo até que todos os elementos do vetor desordenado tenham passado para o vetor ordenado

Inserção Direta 6 | 3 4 5 9 8 3 6 | 4 5 9 8 3 4 6 | 5 9 8 3 4 5 6 | 9 8 3 4 5 6 9 | 8 3 4 5 6 8 9 |

Inserção Direta InsertionSort(V, n) for j← 2 to n do aux ← V[j] ► insere V[j] na parte ordenada V[1..j-1] i ← j – 1 while i > 0 e V[i] > aux do V[i + 1] ← V[i] i ← i – 1 V[i + 1] ← aux

for(i = 1; i < length; ++i) void insertSort(int a[], int length) { int i, j, value; for(i = 1; i < length; ++i) value = a[i]; for (j = i - 1; j >= 0 && a[j] > value; --j) a[j + 1] = a[j]; a[j+1] = value; }