- Métodos simples de busca - Métodos ingênuos de ordenação (introdução)

Documentos relacionados
Algoritmos e Estruturas de Dados I Aula 05: Métodos simples de ordenação (bogo Sort, selection Sort, insertion Sort, bubble Sort)

Limite assintótico para a ordenação, Ordenação em tempo linear

MCTA028 Programação Estruturada Aula 19 Custos de um algoritmo e funções de complexidade

Ordenação. Prof. Jonas Potros

Paradigmas de programação

BCC202 - Estrutura de Dados I

Aula 19: Métodos eficientes de ordenação

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

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

Aula 05: - Recursão (parte 1)

Métodos de Ordenação

MCTA028 Programação Estruturada Aula 20 Exercícios de custos de um algoritmo

Aula 21 Ordenação externa

Aula 05: - Recursão (parte 1)

Banco de Dados. Métodos de Ordenação de Dados. Prof. Walteno Martins Parreira Jr

MCTA001 Algoritmos e Estruturas de Dados I Apresentação e exercícios básicos

MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI2

Projeto e Análise de Algoritmos

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

Métodos de Ordenação

Algoritmos de Ordenação

(a) Indique, em português, o que realiza a seguinte função. [4 pontos]

BCC202 - Estrutura de Dados I

Algoritmos de Ordenação: Tempo Linear

MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI1

Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias:

Universidade Federal do ABC Avaliação Disciplina Turma Professor Data Instruções para a prova (leia antes de começar): SelectionSort selectonsortrec

Estruturas de Dados Algoritmos de Ordenação

Trabalho: Algoritmos de Busca e Ordenação. 1 Introdução. Prof. Bruno Emerson Gurgel Gomes IFRN - Câmpus Currais Novos. 31 de outubro de 2012

ALGORITMOS DE ORDENAÇÃO

Análise de Algoritmos

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. Profº Carlos Alberto T. Batista

Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti

Métodos de Ordenação Parte 4

Centro de Informá-ca Universidade Federal de Pernambuco. Vinicius Cardoso Garcia 2011 Vinicius Cardoso Garcia

Projeto e Análise de Algoritmos

INF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1

Aula 07: Algoritmos de busca e Listas encadeadas

Métodos de Ordenação Parte I

Ordenação em Tempo Linear

INF 1007 Programação II

Extra- Algoritmos de Ordenação

Algoritmos e Estruturas de Dados I Aula 06 Custos de um algoritmo

Vetores e matrizes. MCTA028 Programação Estruturada. Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti

Classificação por Seleção - selection sort

Algoritmos e Estruturas de Dados

Projeto e Análise de Algoritmos

USP - ICMC - SSC SSC o. Semestre Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

Introdução a Algoritmos Parte 09

Aula 12 Métodos de Classificação: - Classificação por Inserção Direta - Classificação por Seleção Direta

INF 1010 Estruturas de Dados Avançadas

Aula 13: Listas encadeadas (estruturas lineares)

Estrutura de Dados. Algoritmos de Ordenação. Prof. Othon M. N. Batista Mestre em Informática

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

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Ordenação de Dados. Ordenação de Dados

- Mapa de memória de um processo - Ponteiros

Aula 05 Ordenação parcial

5. Algoritmos de Ordenação

heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i<n; i++) { e = x[i]; s = i; f = (s-1)/2;

Ordenação de Dados (IV) MergeSort

Algoritmos de Ordenação: Cota Inferior

INF111 Programação II Aulas 11, 12, 13 Ordenação

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

Carlos Eduardo Batista. Centro de Informática - UFPB

Programa Analítico de Disciplina SIN213 Projeto de Algoritmos

ORDENAÇÃO POR INTERCALAÇÃO

Ordenação por Intercalação Métodos de Ordenação Parte 4

Listas (Parte 1) Túlio Toffolo BCC202 Aula 09 Algoritmos e Estruturas de Dados I

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO EM TEMPO LINEAR

Estruturas de Dados 2

Universidade da Madeira. 1. Recursão. 3. Busca. Profa. Dra. Laura Rodríguez Estruturas de dados e algoritmos 2

1. Se v é um vetor, qual a diferença conceitual entre as expressões v[70] e v+70? [2 ponto]

BC1424 Algoritmos e Estruturas de Dados I Aula 03: Recursão / Recursividade

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

Método BubbleSort. Estrutura de Dados II Prof Jairo Francisco de Souza

Classificação por Inserção - insertion sort

Informática Parte 17 Prof. Márcio Hunecke

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

1. Faça um programa que leia uma string digitada pelo usuário e salve em um arquivo em branco.

Aula 11 Métodos de Classificação em memória primária. Prof. Gustavo Callou

BUSCA EM ARRAYS. Prof. André Backes. Ato de procurar por um elemento em um conjunto de dados

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

AULA 13. Algoritmos p.526/582

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Breve Introdução à Complexidade Assintótica de Algoritmos Letícia Rodrigues Bueno

Análise e Complexidade de Algoritmos

Algoritmos de ordenação: Bucketsort, Radixsort e Seleção

Memória secundária. Memória secundária

PESQUISA EM INFORMÁTICA -COMO ESCREVER O TEXTO. Prof. Angelo Augusto Frozza, M.Sc.

Análise empírica de algoritmos de ordenação

Estruturas de Dados 2

SCC-601 Introdução à Ciência da Computação II. Ordenação e Complexidade Parte 3. Lucas Antiqueira

Projeto e Análise de Algoritmos

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

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

Transcrição:

1 MCTA028 Programação Estruturada Busca e Ordenação (parte I) - Métodos simples de busca - Métodos ingênuos de ordenação (introdução) Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti Luiz Rozante 3Q-2018

Busca de um elemento em um vetor 2

3

(*) Fonte: P. Feofiloff. Algoritmos em Linguagem C. 1ª Edição, Editora Campos, 2008. 4

Busca Linear 5

6 Busca Linear Recursiva Crie uma função recursiva para identificar um elemento em um vetor. Assinatura / Prototipo:

Busca Linear Recursiva 7

Busca Binária 8

9 Vetor sem ordem 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 88 100 44 99 11 22 66 140 33 120 130 200 110 150 55 77 Melhor caso: 1 Pior caso: n Vetor crescente 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200 Melhor caso: 1 Pior caso: log(n)

10 Busca Binaria Recursiva Melhor caso: 1 Pior caso: log(n)

11 Vetor sem ordem 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 88 100 44 99 11 22 66 140 33 120 130 200 110 150 55 77 Melhor caso: 1 Pior caso: n

12 Chave = 101 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200

13 Chave = 101 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200 11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200 Inf = 0 Sup = 15

14 Chave = 101 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200 11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200 Inf = 0 Sup = 15 99 100 110 120 130 140 150 200 Inf = 8 Sup = 15

15 Chave = 101 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200 11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200 Inf = 0 Sup = 15 99 100 110 120 130 140 150 200 Inf = 8 Sup = 15 99 100 110 Inf = 8 Sup = 10

16 Chave = 101 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200 11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200 Inf = 0 Sup = 15 99 100 110 120 130 140 150 200 Inf = 8 Sup = 15 99 100 110 Inf = 8 Sup = 10 110 Inf = 10 Sup = 10

Chave = 101 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200 11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200 Inf = 0 Sup = 15 99 100 110 120 130 140 150 200 Inf = 8 Sup = 15 99 100 110 Inf = 8 Sup = 10 110 Inf = 10 Sup = 10 Inf = 10 Sup = 9 17

O problema de ordenação 18

19 Ordenação Ordenar corresponde ao processo de re-arranjar um conjunto de objetos em ordem ascendente ou descendente. Por que ordenar? O objetivo principal da ordenação é facilitar a recuperação posterior de itens do conjunto ordenado. Geralmente considerado no primeiro passo para resolver um problema prático. As ordens mais utilizadas são a numérica e lexicográfica.

20 Por que ordenar? Busca de elementos: O usuário geralmente quer os dados ordenados. Deduplicação de elementos: Ordenar é muito útil para eliminar duplicações. Projeção de objetos em um espaço 3D. Criação de uma árvore geradora mínima. Ordenar é o primeiro passo para carregar os dados em uma estrutura tipo árvore B+.

21 Algoritmos para ordenar elementos Baseado em comparações: Bogo sort Selection sort Insertion sort Bubble sort Mergesort Quicksort Heapsort Ordenação em tempo linear: Radix sort Ordenação de primeiros elementos (seleção parcial): Partial Quicksort

22 O problema de ordenar na forma crescente Um vetor v[0..n-1] é crescente se v[0] v[1] [n-1] O problema de ordenação de um vetor consiste em rearranjar (ou seja, permutar) os elementos de um vetor v[0..n-1] de tal modo que ele se torne crescente. Vetores ordenados na forma crescente: {1, 1, 1, 1, 1, 1, 1, 1} {0, 1, 1, 1, 2, 3, 4, 4, 4, 4, 4, 4, 100}

Verificar se um vetor v[0..n-1] é crescente 23

Número de comparações T(n): - No melhor caso: T(n) = 1 - No pior caso: T(n) = n-1 T(n) = O(n) Crie uma versão recursiva da função crescente Atividade em aula 24

Vetor crecente (recursiva) Número de comparações T(n): - No melhor caso: T(n) = 1 - No pior caso: T(n) = n-1 T(n) = O(n) 25

Embaralhando um vetor 26

27 Número de trocas de elementos T(n): - No melhor caso: T(n) = n - No pior caso: T(n) = n T(n) = O(n)

(1) Bogo sort Miracle sort Monkey sort Stupid sort 28

Número de comparações T(n): - No melhor caso: T(n) = n-1 - No pior caso: T(n) =? 29

Animação: https://www.cs.usfca.edu/~galles/visualization/comparisonsort.html 30 Selection Sort

Selection Sort 31

32 Selection sort https://www.youtube.com/watch?v=92bfuxhn2xe

Insertion Sort Método preferido dos jogadores de cartas Em cada passo, a partir do i=1, o i-ésimo elemento da sequência fonte é apanhado e transferido para a sequência destino, sendo inserido no seu lugar apropriado. 0 1 2 3 4 5 6 1 5 7 10 55 6 1 5 7 10 55 6 Animação: https://www.cs.usfca.edu/~galles/visualization/comparisonsort.html 33

34 Insertion Sort Número de comparações T(n): - No melhor caso: T(n) = n-1 - No pior caso: T(n) =?

35 Insertion sort https://www.youtube.com/watch?v=8ojs1bmke64

Bubble Sort O algoritmo de ordenação baseado em troca, consiste em intercalar pares de elementos que não estão em ordem até que não exista mais pares. O principio do bolha é a troca de valores entre posições consecutivas fazendo com que os valores mais altos borbulhem para o final do vetor. Animação: https://www.cs.usfca.edu/~galles/visualization/comparisonsort.html 36

37 Bubble Sort Número de comparações T(n): - No melhor caso: T(n) = n²/2 n/2 - No pior caso: T(n) = n²/2 n/2

38 Bubble sort https://www.youtube.com/watch?v=cq7smsqbeuw