Ordenação dos Elementos de um Vetor - Bubble Sort e Quick Sort .

Slides:



Advertisements
Apresentações semelhantes
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Advertisements

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,
Algoritmos Escher.
Algoritmos de ordenação
Estrutura de Dados em C/C /2
Campus Pau dos Ferros Disciplina de Algoritmos Prof. Demétrios Coutinho INFORMÁTICA BÁSICA Algoritmos de Ordenação.
Métodos de Pesquisa e Ordenação Estruturas de Dados Melissa Marchiani Palone Zanatta.
Linguagem de Programação – Aula 03 Prof. Me. Ronnison Reges Vidal.
Árvores Binárias Estruturas de Dados Melissa Marchiani Palone Zanatta.
Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.
Com isto a variável (que geralmente é o X) terá um único valor!
Lógica de Programação Aula 26 Prof. Auler Gomes.
Algoritmos e Estruturas de Dados I
1) Defina sequências numéricas.
Algoritmo e Lógica Programação Vetores e Matrizes
Estudo de caso: Seleção de estrutura de dados
IX ELAVIO FABIANA SIMÕES E SILVA ORIENTADORA: VITÓRIA PUREZA
Programação em C Aula 8.
Aprendizado de Máquina
2. Conceitos básicos A complexidade de algoritmos trata do esforço computacional de algoritmos. Além disso, ela fornece subsídios para escolher o melhor.
RODOLFO SOARES TEIXEIRA OBMEP NA ESCOLA
Estruturas de Repetição
Medidas de Dispersão.
Métodos de Pesquisa: Seqüencial e Binária
Algoritmos e Estruturas de Dados I
Métodos de Pesquisa e Ordenação
INF1007: Programação 2 6 – Ordenação de Vetores
4. Complexidade média Este capítulo considera a complexidade média, examinando casos ilustrativos de análise de algoritmos e de projeto de estruturas.
Capítulo VIII – Técnicas de Ordenação
Prof. Wellington Franco Estrutura de um Programa Usando o VisuAlg
Sistemas de Controle III N8SC3
Vantagens e desvantagens da recursão
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
Métodos de Pesquisa e Ordenação
Venda em Dinheiro.
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
Algoritmos e Fluxogramas
Computação Gráfica: Visibilidade Prof. Rafael Vieira
Arquitetura de Computadores
Análise de Algoritmo Profº Me. Jeferson Bussula Pinheiro
FUNDAMENTO DE PROGRAMAÇÃO
INE 5201 – INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS
Algoritmos e Programação MC102
Arranjo Físico Celular
Análise Sintática Botton Up Diomara M. R. Barros
Pesquisa e Ordenação de Vetor
Estruturas de Dados aula 4
Complexidade de Algoritmos
LÓGICA DE PROGRAMAÇÃO Estruturas de Decisão
Vetores: Exercícios Resolvidos
Capítulo 8 Seleção da amostra. Capítulo 8 Seleção da amostra.
Projeto 1: Game Genius usando AppInventor®
Filas Prof. Kariston Pereira
Filas.
Introdução à lógica de programação utilizando Scratch Aula 3
Algoritmos de ordenação
DHD – Desenvolvimento em Hardware
Prof. Rafael Mesquita Listas Encadeadas Prof. Rafael Mesquita
Ordenando Coleções A Classe Collections.
Aula 11 Professores: Conteúdo: Dante Corbucci Filho
Algoritmos de ordenação Estruturas avançadas de dados I
ALGORITMOS E SUA ANÁLISE: UMA INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO
Ementário Noções de hardware e software. Conceitos Fundamentais.
Prof. Elisson de Andrade
RESULUÇÃO DOS EXERCÍCIOS E
Aula 7 Professores: Conteúdo: Dante Corbucci Filho
MATEMÁTICA.
MATEMÁTICA.
Transcrição da apresentação:

Ordenação dos Elementos de um Vetor - Bubble Sort e Quick Sort . Caio Miranda Natasha Gomes Mueller

Roteiro Bubble Sort Quick Sort Sintaxe Vantagens e Desvantagens Exercícios Quick Sort Método Passos Vantagens Desvantagens

Bubble Sort Ordenar é o ato de se colocar os elementos de uma sequência, em uma dada relação de ordem entre si, de acordo com um critério pré-estabelecido  A ideia é percorrer o vetor diversas vezes, a cada passagem fazendo flutuar para o topo o maior/menor elemento da sequência.

Sintaxe: for( y = x + 1; y < TAM; y++ ) // sempre 1 elemento à frente { // se o (x > (x+1)) então o x passa pra frente (ordem crescente) if ( vetor[x] > vetor[y] ) aux = vetor[x]; vetor[x] = vetor[y]; vetor[y] = aux; }

Vantagens e Desvantagens A principal vantagem desse algoritmo é que sua implementação é fácil e conhecida. Além disso, no bubble sort, os elementos são trocados de lugar sem utilizar armazenamento temporário, o que faz o requerimento de espaço ser mínimo. A principal desvantagem é o fato de que não apresenta bons resultados quando a lista contém muitos itens.

Exercício 1)Escreva um programa que leia 5 números inteiros do usuário, use o algoritmo bubble sort para ordenar estes números e imprima na tela os números em ordem crescente. 2) Faça um programa que cadastre o nome e o salário de 10 funcionários, liste todos os dados dos funcionários das seguintes formas:   a) em ordem crescente de salário; b) em ordem decrescente de salário; c) em ordem alfabética; 3) Faça um programa que cadastre notas e nomes de 10 alunos e os apresente de forma ordenada por ‘nome: nota’

Quick Sort Charles Antony Richard Hoare em 1960 , quando estudante, criou o Quick Sort ao tentar traduzir um dicionário de inglês para russo, ordenando as palavras, tendo como objetivo reduzir o problema original em subproblemas para serem resolvidos rapidamente. Quick Sort é uma versão otimizada de uma árvore binária ordenada. Em vez de introduzir itens em sequência numa árvore explícita, o Quick Sort organiza-os correntemente na árvore onde está implícito, de forma recursiva.

Método Particionar os dados e ordenar as várias partes de forma independente Escolha do pivô Ordenar de forma que todos os elementos à esquerda do pivô sejam menores que ele e os da direita maiores Obtendo um grupo (dos elementos menores) e outro (maiores) ainda não ordenados Esses grupos são ordenados de maneira recursiva

Passos quicksort Particionamento: 1. Escolher um pivô x A[( i+j) /2]. 2. Percorrer o vetor a partir da esquerda até que A[i] ≥ x. 3. Percorrer o vetor a partir da direita até que A[j] ≤ x. 4. Trocar A[i] com A[j]. 5. Continuar este processo até os apontadores i e j se cruzarem. 6. Ao final os itens da esquerda do vetor A serão menores ou iguais ao pivô x e os da direita serão maiores ou iguais a x.

Função: 7. Após o particionamento pega-se o lado esquerdo e escolhe um novo pivô x. 8. Percorrer o vetor a partir da esquerda até que A[i] ≥ x. 9. Percorrer o vetor a partir da direita até que A[j] ≤ x. 10.Neste caso, o pivô x já se encontra na posição correta, então é feito uma nova partição, escolhido um novo pivô e percorre o vetor a partir da esquerda até que A[i] ≥ x e a partir da direita até que A[j] ≤ x

11. Volta-se ao lado direito escolhendo um novo pivô x e efetuada uma quarta partição. 12. Percorrer o vetor a partir da esquerda até que A[i] ≥ x. 13. Percorrer o vetor a partir da direita até que A[j] ≤ x. 14. Efetuada uma quinta partição para o vetor ser percorrido a partir da esquerda e da direita. Porém os elementos já estão na ordem correta. Resultado final:

Sintaxe: Escolha do pivô A[i] percorre a partir da esquerda void quick_sort(int *a, int esq, int dir) { int i, j, x, y; i = esq; j = dir; x = a[(esq + dir) / 2]; while(i <= j) { while(a[i] < x && i < dir) { i++; } while(a[j] > x && j > esq) { j--; if(i <= j) { y = a[i]; a[i] = a[j]; a[j] = y; if(j > esq) { quick_sort(a, esq, j); if(i < dir) { quick_sort(a, i, dir); Escolha do pivô A[i] percorre a partir da esquerda A[j] percorre a partir da direita Ocorre a troca de A[i] e A[j] Elementos menores vão para a esquerda e os maiores vão para a direita.(recursividade)

Vantagens É extremamente eficiente para ordenar arquivos de dados. Necessita de apenas uma pequena pilha como memória auxiliar.

Desvantagens Um pequeno engano pode levar a efeitos inesperados para algumas entradas de dados. O método não é estável.

Análise O pior caso ocorre quando, sistematicamente, o pivô é escolhido como sendo um dos extremos de um arquivo já ordenado. Isto faz com que o procedimento Ordena seja chamado recursivamente n vezes, eliminando apenas um item em cada chamada. Para isso não acontecer basta escolher três itens quaisquer do vetor e usar a mediana dos três como pivô.

Dicas Escolha do pivô: mediana de três - Evita o pior caso Depois da partição, trabalhar primeiro no subvetor de menor tamanho - Diminui o crescimento da pilha

Exercícios 1) Utilizando o método Quick Sort, implemente um programa em C onde os elementos abaixo sejam ordenados crescentemente. 9, 3, 2, 6, 7, 0, 1, 5, 4, 8 2) Ordene os elementos do exercício 1 de forma DECRESCENTE.