A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Ordenação dos Elementos de um Vetor - Bubble Sort e Quick Sort ."— Transcrição da apresentação:

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

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

3 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.

4 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; }

5 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.

6 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’

7 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.

8 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

9 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.

10 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 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:

12 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)

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

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

15 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ô.

16 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

17 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.


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

Apresentações semelhantes


Anúncios Google