Quicksort Letícia Rodrigues Bueno

Documentos relacionados
Filas de Prioridades Letícia Rodrigues Bueno

Complexidade Assintótica de Programas Letícia Rodrigues Bueno

Algoritmos de Ordenação: QuickSort

Algoritmos de ordenação Quicksort

Solução de Recorrências

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

Estruturas de Dados para Conjuntos Disjuntos: Union-find Letícia Rodrigues Bueno

Algoritmos em Grafos: Caminho Mínimo

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

Teoria da Complexidade Computacional

Caminho Mínimo de Fonte Única em Grafos sem Pesos Negativos

SIN5013 Análise de Algoritmos e Estrutura de Dados - 1o Semestre de 2019

1 a Lista de Exercícios

Complexidade assintótica de programas

Projeto e Análise de Algoritmos

Teoria da Computação. Aula 3 Comportamento Assintótico 5COP096. Aula 3 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick F. M.

Algoritmos e Estruturas de Dados I

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: Claudio Quick F. M.

MC3305 Algoritmos e Estruturas de Dados II. Aula 00 Apresentação. Prof. Jesús P. Mena-Chalco.

5. Algoritmos de Ordenação

Algoritmos em Grafos

Caminho Mínimo de Fonte Única em Grafos com Pesos Negativos Letícia Rodrigues Bueno

Algoritmos de Ordenação

Algoritmos de Ordenação: MergeSort

Quicksort. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

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

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

2. Ordenação por Seleção

Análise de algoritmos

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

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos

SCC-501 Introdução à Ciência de Computação II

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

Estruturas de Dados 2

Estruturas de Dados Aula 1: Introdução e conceitos básicos 28/02/2011

Análise e Complexidade de Algoritmos

Algoritimos e Estruturas de Dados III CIC210

Métodos de Ordenação

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010

Mergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort

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

BCC202 - Estrutura de Dados I

SCC-201 Introdução à Ciência de Computação II

Algoritmos de Ordenação

AULA 13. Algoritmos p.526/582

CURSO DE ESTRUTURA DE DADOS MÓDULO: ALGORITMOS DE ORDENAÇÃO E PESQUISA PROFESSORA: DANIELA ELOISE FLÔR COLABORADORA: MARIA CAROLINA SILA VANUCHI

Algoritmos de Ordenação: Tempo Linear

Análise de algoritmos

Ordenação e Pesquisa de Dados. Aula 07 Insertion Sort e Bubble Sort

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

ALGORITMOS DE ORDENAÇÃO

BCC Projeto e Análise de Algoritmos Aula 0: Apresentação

Arquivos Sequenciais. Estruturas de Dados II Vanessa Braganholo

Ordenação em Tempo Linear

Mediana. Aula 09. Menor. i-ésimo menor elemento. Algoritmo de Seleção. -ésimo menor elemento. Mediana é o n+1. -ésimo menor ou o n+1

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

Algoritmos de Ordenação e Pesquisa. Marco Antonio Moreira de Carvalho Algoritmos e Estrutura de Dados

Algoritmos de Ordenação

1. O que é a eficiência assintótica de um algoritmo. Explique com suas palavras.

AED Algoritmos e Estruturas de Dados LEE /2004

Análise e Projeto de Algoritmos

UNIVERSIDADE PRESBITERIANA MACKENZIE Faculdade de Computação e Informática. 3 a ETAPA

Algoritmos de Ordenação: Cota Inferior

Análise e Complexidade de Algoritmos

Classes, Herança e Interfaces

Algoritmos e Estruturas de Dados II

Algoritmos de ordenação: Inserção e Shellsort

Estruturas de Dados Apresentação da Disciplina

Algoritmos para Automação e Sistemas

Transcrição:

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:

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: 2 1 7 8 3 5 6 4

Quicksort Legenda: pivô; 1 a partição: ; 2 a partição: 2 1 7 8 3 5 6 4 2 1 3 8 7 5 6 4

Quicksort Legenda: pivô; 1 a partição: ; 2 a partição: 2 1 7 8 3 5 6 4 2 1 3 8 7 5 6 4 2 1 3 8 7 5 6 4

Quicksort Legenda: pivô; 1 a partição: ; 2 a partição: 2 1 7 8 3 5 6 4 2 1 3 8 7 5 6 4 2 1 3 8 7 5 6 4 2 1 3 8 7 5 6 4

Quicksort Legenda: pivô; 1 a partição: ; 2 a partição: 2 1 7 8 3 5 6 4 2 1 3 8 7 5 6 4 2 1 3 8 7 5 6 4 2 1 3 8 7 5 6 4 2 1 3 4 7 5 6 8

1 quicksort(a, p, r): 2 se (p < r) então 3 q = partição(a,p,r) 4 quicksort(a,p,q 1) 5 quicksort(a,q + 1,r) Quicksort

Quicksort 1 quicksort(a, p, r): 2 se (p < r) então 3 q = partição(a,p,r) 4 quicksort(a,p,q 1) 5 quicksort(a,q + 1,r) 1 partição(a, p, r): 2 x = A[r] 3 i = p 1 4 para (j = p; j r 1; j ++) faça 5 se (A[j] x) então 6 i = i + 1 7 A[i] A[j]) 8 A[i + 1] A[r]) 9 retorne i + 1

Quicksort 1 quicksort(a, p, r): 2 se (p < r) então 3 q = partição(a,p,r) 4 quicksort(a,p,q 1) 5 quicksort(a,q + 1,r) 1 partição(a, p, r): 2 x = A[r] 3 i = p 1 4 para (j = p; j r 1; j ++) faça 5 se (A[j] x) então 6 i = i + 1 7 A[i] A[j]) 8 A[i + 1] A[r]) 9 retorne i + 1 Chamada externa:

Quicksort 1 quicksort(a, p, r): 2 se (p < r) então 3 q = partição(a,p,r) 4 quicksort(a,p,q 1) 5 quicksort(a,q + 1,r) 1 partição(a, p, r): 2 x = A[r] 3 i = p 1 4 para (j = p; j r 1; j ++) faça 5 se (A[j] x) então 6 i = i + 1 7 A[i] A[j]) 8 A[i + 1] A[r]) 9 retorne i + 1 Chamada externa: quicksort(a,1,length(a))

Quicksort - Complexidade no Pior Caso

Quicksort - Complexidade no Pior Caso Dividir: problema é particionado em dois subproblemas;

Quicksort - Complexidade no Pior Caso Dividir: problema é particionado em dois subproblemas; Conquistar: subproblemas são ordenados;

Quicksort - Complexidade no Pior Caso Dividir: problema é particionado em dois subproblemas; Conquistar: subproblemas são ordenados; Combinar: subproblemas são ordenados localmente, então não é necessário combinar;

Quicksort - Complexidade no Pior Caso Dividir: problema é particionado em dois subproblemas; Conquistar: subproblemas são ordenados; Combinar: subproblemas são ordenados localmente, então não é necessário combinar; Complexidade no pior caso:

Quicksort - Complexidade no Pior Caso Dividir: problema é particionado em dois subproblemas; Conquistar: subproblemas são ordenados; Combinar: subproblemas são ordenados localmente, então não é necessário combinar; Complexidade no pior caso: { Θ(1), se n = 1, T(n) = T(n 1)+T(0) + Θ(n) = T(n 1)+Θ(n), se n > 1. }{{}}{{} dividir conquistar

Quicksort - Complexidade no Pior Caso Dividir: problema é particionado em dois subproblemas; Conquistar: subproblemas são ordenados; Combinar: subproblemas são ordenados localmente, então não é necessário combinar; Complexidade no pior caso: { Θ(1), se n = 1, T(n) = T(n 1)+T(0) + Θ(n) = T(n 1)+Θ(n), se n > 1. }{{}}{{} dividir conquistar Pelo Método de Substituição:

Quicksort - Complexidade no Pior Caso Dividir: problema é particionado em dois subproblemas; Conquistar: subproblemas são ordenados; Combinar: subproblemas são ordenados localmente, então não é necessário combinar; Complexidade no pior caso: { Θ(1), se n = 1, T(n) = T(n 1)+T(0) + Θ(n) = T(n 1)+Θ(n), se n > 1. }{{}}{{} dividir conquistar Pelo Método de Substituição: T(n) = T(n 1)+Θ(n) =

Quicksort - Complexidade no Pior Caso Dividir: problema é particionado em dois subproblemas; Conquistar: subproblemas são ordenados; Combinar: subproblemas são ordenados localmente, então não é necessário combinar; Complexidade no pior caso: { Θ(1), se n = 1, T(n) = T(n 1)+T(0) + Θ(n) = T(n 1)+Θ(n), se n > 1. }{{}}{{} dividir conquistar Pelo Método de Substituição: T(n) = T(n 1)+Θ(n) = Θ(n 2 )

Exercícios 1. Um algoritmo de ordenação é estável se preserva ordem relativa de itens com valores idênticos. Responda: quicksort é estável? Exemplifique.

Exercícios 1. Um algoritmo de ordenação é estável se preserva ordem relativa de itens com valores idênticos. Responda: quicksort é estável? Exemplifique. 2. Modifique o quicksort para fazer ordenação decrescente.

Exercícios 1. Um algoritmo de ordenação é estável se preserva ordem relativa de itens com valores idênticos. Responda: quicksort é estável? Exemplifique. 2. Modifique o quicksort para fazer ordenação decrescente. 3. Forneça um breve argumento mostrando que o tempo de execução de partição() sobre um subarranjo de tamanho n é Θ(n).

Exercícios 1. Um algoritmo de ordenação é estável se preserva ordem relativa de itens com valores idênticos. Responda: quicksort é estável? Exemplifique. 2. Modifique o quicksort para fazer ordenação decrescente. 3. Forneça um breve argumento mostrando que o tempo de execução de partição() sobre um subarranjo de tamanho n é Θ(n). 4. Que valor de q partição() retorna quando todos os elementos no arranjo A[p..r] têm o mesmo valor? Modifique partição() de forma que q = (p+r)/2 quando todos os elementos no arranjo A[p..r] têm o mesmo valor.

Exercícios 1. Um algoritmo de ordenação é estável se preserva ordem relativa de itens com valores idênticos. Responda: quicksort é estável? Exemplifique. 2. Modifique o quicksort para fazer ordenação decrescente. 3. Forneça um breve argumento mostrando que o tempo de execução de partição() sobre um subarranjo de tamanho n é Θ(n). 4. Que valor de q partição() retorna quando todos os elementos no arranjo A[p..r] têm o mesmo valor? Modifique partição() de forma que q = (p+r)/2 quando todos os elementos no arranjo A[p..r] têm o mesmo valor. 5. Qual o melhor caso do quicksort? Qual seu custo neste caso?

Bibliografia Utilizada CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L. e STEIN, C. Introduction to Algorithms, 3 a edição, MIT Press, 2009. SZWARCFITER, J. L. e MARKENZON, L. Estruturas de Dados e seus Algoritmos, LTC, 1994. ZIVIANI, N. Projeto de Algoritmos: com implementações em Pascal e C, 2 a edição, Cengage Learning, 2009.