Transcript
Page 1: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

INSTITUTO FEDERAL RIO GRANDE DO SUL Campus Osório

1

Page 2: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ao final desta Aula: ü  Conhecer o método de ordenação bublesort e seleção

direta.

ü Desenvolver os seus respectivos algoritmos

2

Page 3: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Lembre-se

ü Sempre que tiver dúvidas, pergunte.

ü Muita atenção nas explicações;

ü Utilize as referências para estudar em casa.

3

Page 4: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

ü Estruturas de seleção

ü Estruturas de repetição

ü Vetores;

ü Algoritmos, em geral

Caso tenha dificuldades na resolução do exercício, revise o seguinte conteúdo:

4

Page 5: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Como ordenamos nossas coisas?

5

Page 6: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Algoritmos de Ordenação

Troca Seleção

Bubble Sort Cocktail Sort Comb Sort Gnome Sort Odd-even Sort Quicksort

Selection Sort

HeapSort

6

Insertion Sort

Shell Sort

Inserção

Page 7: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

7

ü Método de ordenação simples;

ü Entendimento e implementação fáceis;

ü É um dos mais conhecidos métodos de ordenação;

ü Não é um algoritmo eficiente;

ü Objetivo é desenvolver o raciocínio.

O Princípio do Bubble sort é a troca entre posições consecutivas, fazendo com que os valores mais altos (ou mais baixos) “borbulhem” para o final do conjunto

Page 8: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

8

Considere o conjunto abaixo:

5 3 1 4 2

Como poderíamos ordená-lo?  

Page 9: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

9

Passo 1: Comparar os dois primeiros valores.

5 3 1 4 2

Estão desordenados entre si?  

<  

Page 10: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

10

Passo 1: Comparar os dois primeiros valores.

3 5 1 4 2

Está ordenado, agora?  

<  

Page 11: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

11

Passo 2: Repetir o procedimento até o final.

3 5 1 4 2

Estão desordenados entre si?  

<  

Page 12: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

12

Passo 2: Repetir o procedimento até o final.

3 1 5 4 2

E agora?  

<  

Page 13: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

13

Passo 2: Repetir o procedimento até o final.

3 1 5 4 2

5 é menor que o 4?  

<  

Page 14: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

14

Passo 2: Repetir o procedimento até o final.

3 1 4 5 2

inverte  

<  

Page 15: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

15

Passo 2: Repetir o procedimento até o final.

3 1 4 5 2

5 é menor que o 2?  

<  

Page 16: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

16

3 1 4 2 5

Agora, 0 5 "borbulhou" até a última posição, que é a correta.  

O Próximo passo é repetir o processo desde o início, sem comparar o penúltimo elemento com o último.  

Page 17: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

17

3 1 4 2 5

Comparar os valores:  

3 é menor que 1?  

<  

Page 18: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

18

1 3 4 2 5

3 é menor que 4?  

<  

Comparar os valores:  

Page 19: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

19

1 3 4 2 5

4é menor que 2?  

<  

Comparar os valores:  

Page 20: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

20

1 3 2 4 5

Agora, o 4 está na posição final. Devemos continuar comparando do início, sem utilizarmos o 4 e o 5.  

Page 21: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

21

1 3 2 4 5

1 é menor que 3?  

Comparando:  

<  

Page 22: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

22

1 3 2 4 5

3 é menor que 2?  

Comparando:  

<  

Page 23: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

23

1 2 3 4 5

Basta agora, realizar o mesmo processo do início, ignorando o 3 em diante.  

Continuando:  

<  

Page 24: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

24

1 2 3 4 5

Como só temos um último elemento...  

2 Está na sua posição final:  

Page 25: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Ordenação bolha

25

1 2 3 4 5

A ordenação acabou!  

Page 26: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Bolha.c

26

#include <stdio.h> int main(void) {

int vetor[5] = {5, 3, 1, 4, 2};

int tamanho = 5; int aux;

for(int i=tamanho-1; i >= 1; i--) {

for( int j=0; j < i ; j++) {

if(vetor[j] > vetor[j + 1]) { aux = vetor[j];

vetor[j] = vetor[j+1];

vetor[j + 1] = aux;

}

}

} for( int r = 0; r < tamanho; r++){

printf("%d\n",vetor[r]);

}

}

Page 27: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

27

ü Ao comparar, caso o primeiro elemento esteja

desordenado em relação ao outro, é feita a troca;

ü Ao alcançar o final do conjunto, teremos o menor

valor ou o maior, conforme feita a primeira

comparação.

ü Este algoritmo, embora contenha o mesmo

número de comparações que o bubble sort, o

numero médio de trocas é menor.

O Método de ordenação seleção direta consiste em varrer o conjunto comparando todos os elementos com o primeiro.

Page 28: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

28

Considere o conjunto abaixo:

5 3 1 4 2

Como poderíamos ordená-lo pela seleção direta?  

Page 29: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

29

Passo 1: Comparar o primeiro com o segundo.

5 3 1 4 2

Estão desordenados entre si?  

<  

Page 30: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

30

Passo 2: Comparar o primeiro com os próximos.

3 5 1 4 2

Estão desordenados entre si?  

<  

Page 31: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

31

Passo 2: Comparar o primeiro com os próximos.

1 5 3 4 2

Estão desordenados entre si?  

<  

Page 32: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

32

Passo 2: Comparar o primeiro com os próximos.

1 5 3 4 2

Estão desordenados entre si?  

<  

Page 33: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

33

O menor elemento foi deslocado para sua posição correta!

1 5 3 4 2

O Primeiro eleento não precisa ser mais comparado  

Page 34: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

34

Passo 3: Comparar o os restantes.

1 5 3 4 2

Estão desordenados entre si?  

<  

Page 35: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

35

Passo 3: Comparar o os restantes.

1 3 5 4 2

Estão desordenados entre si?  

<  

Page 36: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

36

Passo 3: Comparar o os restantes.

1 3 5 4 2

Estão desordenados entre si?  

<  

Page 37: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

37

Segundo item completo.

1 2 5 4 3

Assim por diante.  

Page 38: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

38

Continuando as comparações.

1 2 5 4 3

Assim por diante.  

<  

Page 39: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

39

Continuando as comparações.

1 2 4 5 3

Assim por diante.  

<  

Page 40: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

40

Mais um item em sua posição.

1 2 3 5 4

Assim por diante.  

Page 41: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

41

Continuando.

1 2 3 5 4

Assim por diante.  

<  

Page 42: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

42

Mais um item em sua posição.

1 2 3 4 5

Assim por diante.  

Page 43: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

43

Mais um item em sua posição.

1 2 3 4 5

Só sobrou o último item, e já está na posição correta.  

Page 44: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Seleção Direta

44

Finalizou a ordenação.

1 2 3 4 5

Page 45: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Selecao.c

45

#include  <stdio.h>  int  main(int  argc,  const  char  *  argv[])  {          int  vetor[5]  =  {5,  3,  1,  4,  2};          int  tamanho  =  5;          int  i,  j,  menor,  aux;                    for(i  =  0;  i  <  tamanho  -­‐  1;  i++)          {                  menor  =  i;                  for(j  =  i  +  1;  j  <  tamanho;  j++)                  {                          if(vetor[j]  <  vetor[menor])                                  menor  =  j;                  }                  aux  =  vetor[i];                  vetor[i]  =  vetor[menor];                  vetor[menor]  =  aux;          }          for(  int  r  =  0;  r  <  5;  r++){                  prinL("%d\n",vetor[r]);          }  }  

Page 46: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

ü  Crie um algoritmo de ordenação do tipo Bubble Sort que classifique em ordem decrescente, 20 números aleatórios.

ü  Faça um estudo comparando os 2 algoritmos estudados e sua velocidade de execução para 10, 100 e 1000 elementos classificados. Anote os resultados de tempo máximo, mínimo e médio obtido a partir de 10 execuções com números aleatórios.

46

Page 47: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

47 hPps://www.youtube.com/watch?v=ZZuD6iUe3Pc  

Page 48: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

Aho, Alfred V., Hopcroft, John F., Ullman, Jeffrey D., Data Structure and Algorithms, Massachusetts: Addison- Wesley, 1987.

Cormen T, Leiserson, Rivest. Introduction to Algorithms. 2nd edition. MIT Press, 2001..

Knuth, D. E. The Art of Computer Programming, Addison-Wesley, 1974.

Soffner R. Algoritmos e programação em Linguagem C. Editora Saraiva, 2013.

Szwarcfiter, J. L. Grafos e Algoritmos Computacionais, Addison-Wesley, 1974.

Referências

48

Page 49: Algoritmos de busca e ordenação - Ordenação Bolha e Ordenação de Seleção Direta

49


Recommended