Ordenação por Partição (Quick Sort)

Documentos relacionados
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Aula 10: Ordenação

ANÁLISE DE COMPLEXIDADE DE ALGORITMOS

Ordenação: Introdução e métodos elementares. Algoritmos e Estruturas de Dados II

Projeto e Análise. Aula 1: Algoritmos de Ordenação Prof. Carlos

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

3.3 Ordenação por Heap (Heapsort)

Quicksort. Algoritmos e Estruturas de Dados II

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

Métodos de Ordenação Parte 1

Projeto e Análise de Algoritmos Recorrências. Prof. Humberto Brandão

Métodos de Ordenação Parte 1

Algoritmos de Pesquisa e Ordenação em Vectores

5. Análise de Complexidade de Algoritmos. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006)

Ordenação. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

MEDIDAS DE POSIÇÃO: X = soma dos valores observados. Onde: i 72 X = 12

Ordenação e Busca em Arquivos

Classificação e Pesquisa de Dados

Ordenação (Parte 1) Prof. Túlio Toffolo BCC202 Aula 13 Algoritmos e Estruturas de Dados I

6.1 - PROCEDIMENTO DE AVALIAÇÃO DE INCERTEZA EM MEDIÇÕES DIRETAS

Ex: Cálculo da média dos pesos dos terneiros da fazenda Canoas-SC, à partir dos dados originais: x = 20

Faculdade de Tecnologia de Catanduva CURSO SUPERIOR DE TECNOLOGIA EM AUTOMAÇÃO INDUSTRIAL

Distribuições Amostrais. Estatística. 8 - Distribuições Amostrais UNESP FEG DPD

Capítulo 8. Método de Rayleigh-Ritz

Análise de Complexidade de Algoritmos

Ordenação de Vectores

Atividades Práticas Supervisionadas (APS)

Confiabilidade Estrutural

Revisão de Estatística X = X n

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Complexidade Computacional da Determinação da Correspondência entre Imagens

2. MODELO DETALHADO: Relações de Recorrência. Exemplo: Algoritmo Recursivo para Cálculo do Fatorial Substituição Repetida

Construção e Análise de Gráficos

d s F = m dt Trabalho Trabalho

1. Revisão Matemática

Complexidade de Algoritmos Aula 5

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

MÉTODO COMPUTACIONAL AUTOMÁTICO TICO PARA PRÉ-PROCESSAMENTO PROCESSAMENTO DE IMAGENS RADIOGRÁFICAS. M. Z. Nascimento, A. F. Frère e L. A.

x n = n ESTATÍSTICA STICA DESCRITIVA Conjunto de dados: Organização; Amostra ou Resumo; Apresentação. População

16 - PROBLEMA DO TRANSPORTE

MEDIDAS DE TENDÊNCIA CENTRAL I

Algoritmos e Estruturas de Dados 2005/2006

Estudando complexidade de algoritmos

Algoritmos e Estruturas de Dados 2006/2007

Tabela 1 Números de acidentes /mês no Cruzamento X em CG/07. N de acidentes / mês fi f

ORDENAÇÃO 1. ORDENAÇÃO POR TROCA

ESTATÍSTICA APLICADA À ZOOTECNIA

Programação de Computadores II. Recursividade

REGRESSÃO LINEAR 05/10/2016 REPRESENTAÇAO MATRICIAL. Y i = X 1i + 2 X 2i k X ni + i Y = X + INTRODUÇÃO SIMPLES MÚLTIPLA

MÓDULO 8 REVISÃO REVISÃO MÓDULO 1

Ivan G. Peyré Tartaruga. 1 Metodologia espacial

! "#! "#$% %! &'(! &!! ) * %+,-. ) '(! *///0 1! 0!2! ///,-!3///4.

Ordenação por Troca. Bubblesort Quicksort

Complexidade de Algoritmos

Média. Mediana. Ponto Médio. Moda. Itabira MEDIDAS DE CENTRO. Prof. Msc. Emerson José de Paiva 1 BAC011 - ESTATÍSTICA. BAC Estatística

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

Fontes Bibliográficas. Estruturas de Dados Aula 14: Recursão. Introdução. Introdução (cont.)

REGESD Prolic Matemática e Realidade- Profª Suzi Samá Pinto e Profº Alessandro da Silva Saadi

Forma padrão do modelo de Programação Linear

Oitava Lista de Exercícios

Econometria: 3 - Regressão Múltipla

Previsão de demanda quantitativa Regressão linear Regressão múltiplas Exemplos Exercícios

6. Medidas de assimetria e curtose

Aula 9. Aula de hoje. Aula passada. Self-normalized Importance Sampling Gerando amostras complicadas Variância amostral Simulação

Em muitas situações duas ou mais variáveis estão relacionadas e surge então a necessidade de determinar a natureza deste relacionamento.

Estatística. 2 - Estatística Descritiva

DISTRIBUIÇÃO HIPERGEOMÉTRICA

Algoritmos e Estruturas de Dados 2005/2006. Algoritmo: conjunto claramente especificado de instruções a seguir para resolver um problema

Busca binária. Busca em arquivos. Busca binária. Busca binária. Ordenação e busca em arquivos

M = C( 1 + i.n ) J = C.i.n. J = C((1+i) n -1) MATEMÁTICA FINANCEIRA. M = C(1 + i) n BANCO DO BRASIL. Prof Pacher

Como CD = DC CD + DC = 0

O delineamento amostral determina os processos de seleção e de inferência do valor da amostra para o valor populacional.

Interpolação. Exemplo de Interpolação Linear. Exemplo de Interpolação Polinomial de grau superior a 1.

Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010

RACIOCÍNIO LÓGICO / ESTATÍSTICA LISTA 2 RESUMO TEÓRICO

Introdução. Objetivo da Ciência da Computação. Regra Geral. Problema Algoritmo Implementação. Projeto e Análise de. Algoritmo 3

DESEMPENHO DE ESTIMADORES DA MÉDIA POPULACIONAL DE DISTRIBUIÇÕES ASSIMÉTRICAS BASEADOS EM AMOSTRAGEM POR CONJUNTOS ORDENADOS

Introdução. Objetivo da Ciência da Computação. Regra Geral. Nenhuma implementação excelente salva um Algoritmo inadequado.

Estatística Descritiva. Medidas estatísticas: Localização, Dispersão

Capítulo V - Interpolação Polinomial

Relatório 2ª Atividade Formativa UC ECS

ALGORITMOS RANDÔMICOS

Uma recorrência é uma equação que descreve uma função em termos do seu valor em entradas menores

ANÁLISE DE REGRESSÃO E CORRELAÇÃO

Instituto Politécnico de Bragança Escola Superior de Tecnologia e de Gestão

Regressão Simples. Parte III: Coeficiente de determinação, regressão na origem e método de máxima verossimilhança

ESTATÍSTICA Aula 7. Prof. Dr. Marco Antonio Leonel Caetano

Regressão. Pedro Paulo Balestrassi

É o grau de associação entre duas ou mais variáveis. Pode ser: correlacional ou. experimental.

Técnicas Não Paramétricas

Controle Estatístico de Qualidade. Capítulo 6 (montgomery)

Distribuições de Probabilidades

AULA Produto interno em espaços vectoriais reais ou complexos Produto Interno. Norma. Distância.

Modelo de Regressão Simples

Bubble Sort. Tempo total O(n 2 )

PROCEDIMENTOS DE CÁLCULO DE INCERTEZA DE MEDIÇÃO EM MEDIÇÕES DIRETAS E INDIRETAS

3- Autovalores e Autovetores.

Introdução à Programação. Recursão

PROBLEMA DE INCERTEZA EM SISTEMAS DINÂMICOS UTILIZANDO DEFUZZIFICAÇÃO PELO CENTROIDE

AMOSTRAGEM EM DOIS ESTÁGIOS COM UNIDADES PRIMÁRIAS DE TAMANHOS DIFERENTES SUBSAMPLING TO TWO PROBATION WITH PRIMARY UNITS OF UNEQUAL SIZES

1. ORDENAÇÃO POR TROCA ORDENAÇÃO. 1.1 Ordenação por Bolha. Exemplo, 25, 57, 48, 37, 12, 92, 86, 33. Algoritmo. Complexidade de Tempo

Transcrição:

Vectores: Algortmos de Ordeação (2) Algortmos e Estruturas de Dados 2009/2010 Ordeação por Partção (Quck Sort) Algortmo (ordeação por partção): 1. Caso básco: Se o úmero () de elemetos do vector (a) a ordear for muto pequeo, usar outro algortmo (sertosort) 2. Passo de partção: 2.1. Escolher um elemeto arbtráro (x) do vector (chamado pvot) 2.2. Partr o vector cal em dos sub-vectores (esquerdo e dreto), com valores x o sub-vector esquerdo e valores x o sub-vector dreto (podedo exstr um 3º sub-vector cetral com valores =x) 3. Passo recursvo: Ordear os sub-vectores esquerdo e dreto, usado o mesmo método recursvamete Algortmo recursvo baseado a técca dvsão e coqusta AED - 2009/10 2 1

Exemplo do Passo de Partção x x=4 v: 8 9 2 5 4 6 1 3 7 8 9 2 5 4 6 1 3 7 3 9 2 5 4 6 1 8 7 3 1 2 5 4 6 9 8 7 3 1 2 5 4 6 9 8 7 < 3 1 2 4 5 6 9 8 7 AED - 2009/10 3 x Implemetação da Ordeação por Partção em C++ /* calcula a medaa etre os valores dos dces left, rght, e cetro (left+rght)/2 do vector a */ template <class Comparable> cost Comparable &meda3(vector<comparable> &a, t left, t rght) t ceter = (left+rght) /2; f (a[ceter] < a[left]) swap(a[left], a[ceter]); f (a[rght] < a[left]) swap(a[left], a[rght]); f (a[rght] < a[ceter]) swap(a[ceter], a[rght]); //coloca pvot a poscao rght-1 swap(a[ceter], a[rght-1]); retur a[rght-1]; AED - 2009/10 4 2

Implemetação da Ordeação por Partção em C++ /* Ordea vector(a) etre duas posções dcadas (left e rght). Supõe que os elemetos do vector são comparáves com "<" e copáves com "=". */ template <class Comparable> vod qucksort(vector<comparable> &a, t left, t rght) f (left-rght <= 10) sertosort(a,left,rght); else // calzações // se vector pequeo Comparable x = meda3(a,left,rght); t = left; t = rght-1; // passo de partção // x é o pvot // cotua... AED - 2009/10 5 Implemetação da Ordeação por Partção em C++ for(; ; ) whle (a[++] < x) ; whle (x < a[--]) ; f ( < ) swap(a[], a[]); else break; swap(a[], a[rght-1]); //repoe pvot // passo recursvo qucksort(a, left, -1); qucksort(a, +1, rght); AED - 2009/10 6 3

Programa de teste #clude <ostream.h> #clude <stdlb.h> // Para usar rad() // serr aqu a fução QuckSort vod mprme(cost t v[], t ) for (t = 0; < ; ++) cout << v[] << ' '; cout << '\'; ma() cost t SIZE = 100; t v[size]; for (t = 0; < SIZE; ++) v[] = rad(); mprme(v, SIZE); qucksort(v, 0, SIZE - 1); mprme(v, SIZE); retur 0; AED - 2009/10 7 Aálse da Ordeação por Partção Escolha pvot determa efcêca por caso: pvot é elemeto mas pequeo O(N 2 ) melhor caso: pvot é elemeto médo O(N logn) caso médo: pvot corta vector arbtraramete O(N logn) Escolha pvot má escolha: extremos do vector ( O(N 2 ) se vector ordeado ) aleatóro: evolve mas uma fução pesada recomedado: medaa de três elemetos (extremos do vector e poto médo) AED - 2009/10 8 4

Efcêca da Ordeação por Partção Por caso: cada rectâgulo refere-se a uma chamada recursva Melhor caso: -1 1 /2 /2-2 -3 1... 1 1+log 2 /4 /4... /4 /4 1 1 1 1 1 1 1 1 1 1 profuddade de recursão: tempo de execução total (somado totas de lhas): T() = O[++(-1) +... +2] = O[+(-1)( + 2)/2] = O( 2 ) profuddade de recursão: 1+log 2 (sem cotar com a possbldade de um elemeto ser excluído dos sub-arrays esquerdo e dreto) tempo de execução total (uma vez que a soma de cada lha é ): T() = O[(1+log 2 ) ] = O( log ) AED - 2009/10 9 Complexdade Espacal de QuckSort O espaço de memóra exgdo por cada chamada de qucksort, sem cotar com chamadas recursvas, é depedete do tamaho () do array O espaço de memóra total exgdo pela chamada de qucksort, cludo as chamadas recursvas, é pos proporcoal à profuddade de recursão Assm, a complexdade espacal de qucksort é: O(log ) o melhor caso (e o caso médo) O() o por caso Em cotrapartda, a complexdade espacal de sertosort é O(1) AED - 2009/10 10 5

BucketSort Ordeação lear usa formação adcoal sobre etrada Algortmo vector de etrada: teros postvos ferores a M a = [ A 1, A 2,, A N ] ; A < M calzar um vector de M posções a 0 s cout = [c 1, c 2,, c M ] ; c = 0 Ler vector etrada (a) e para cada valor cremetar a posção respectva o vector cout : cout[a]++ Produzr saída ledo o vector cout Efcêca tempo lear AED - 2009/10 11 Comparação de tempos médos de execução (observados) de dversos algortmos de ordeação Iserto sort Heap sort Merge sort Quck sort Cada poto correspode à ordeação de 100 arrays de teros gerados aleatoramete Fote: Sah, "Data Structures, Algorthms ad Applcatos C++" Método de ordeação por partção (qucksort) é a prátca o mas efcete, excepto para arrays pequeos (até cerca 20 elemetos), em que o método de ordeação por serção (sertosort) é melhor! AED - 2009/10 12 6