 Bruno Oliveira
 Franciele Martins
 Ricardo Mattos
 Rodrigo Asbahr
 Selma Cavalheiro
Franciele
 Introdução
 Definição
 Método
 Eficiência
 Bubble Sort com Pipelining
 Odd -Even Sort
 Aplicações
 Exemplo
 Conclusão
 Referências Bibliográficas
 Dúvidas
Franciele
 Ordenação:colocar os elementos em uma
sequência de informações, ou dados, em uma
relação de ordem predefinida.
 Um algoritmo que ordena um conjunto,
geralmente representado em um vetor, é
chamado de algoritmo de ordenação.
 Acessa dados de modo:
Franciele
 Para obtermos os dados ordenados, temos duas
alternativas:
Franciele
 Bubble sort, é o algoritmo de ordenação mais
conhecido e popular
 Simples de entender e implementar
 Usa a estratégia de “comparação e troca”, que é
aplicada em várias iterações sobre os dados a
serem ordenados
Franciele
77 9911
00
 A idéia é fazer os elementos flutuarem
Franciele
 Pretende-se ordenar os elementos de um array.
 Serão ordenados desde a primeira até à última
posição, na qual em cada iteração da ordenação
é calculado o maior/menor valor dos elementos
que ainda faltam ordenar.
10 8 6 2 16 4 18 11 14 12
Ricardo
10 8 6 2 16 4 18 11 14 12
108 6 2 16 4 18 11 14 12
108 6 2 16 4 18 11 14 12
Compara os dois elementos e troca
Compara os dois elementos e troca
Compara os dois elementos e troca
108 6 2 16 4 18 11 14 12
Compara os dois elementos e troca
Ricardo
 No final da 1ª iteração:
 O maior elemento está em último lugar.
Pode-se dizer que o elemento nº 18 saltou
“borbulhou” para a sua posição correta.
 O processo volta a repetir-se, só que desta vez ele
pode parar antes do elemento nº 18, dado que ele
já se encontra no lugar correto.
Ricardo
 Tempos de Ordenação (sendo n o número de
elementos a ordenar)
 Obs.: A complexidade desse algoritmo é de Ordem quadrática. Por isso, ele não é
recomendado para programas que precisem de velocidade e operem com
quantidade elevada de dados.
 Melhor caso: n2
/2
Verifica-se quando o vetor já está ordenado.
 Pior caso: n2
Verifica-se quando o vetor está ordenado na ordem inversa.
Ricardo
 O pipelining é possivel pois as iterações de cada
fase vão percorrendo o vector, não necessitando
posteriormente de valores anteriores
 Ou seja, quando a primeira fase já se encontra na
comparação de x2 e x3, a segunda fase já pode
usar os valores x0 e x1 para comparação.
Rodrigo
Rodrigo
259131721
259132117
259211317
252191713
221517913
Fase 1
Fase 1
Fase 1
Fase 1
Fase 1
Fase 2
Fase 2
Fase 2Fase 3
Rodrigo
 É uma variante do algoritmo Bubble Sort
 Constituído por duas fases distintas:
◦ Fase even (par)
◦ Fase odd (ímpar)
 Na fase even (par) comparam-se as posições (índices) pares
com a posição seguinte a cada uma delas
 Na fase odd (ímpar) comparam-se as posições (índices)
ímpares com a posição seguinte a cada uma delas
Bruno
Bruno
Posição 1
Loops Totais 1
Loops Odd 1
Loops Even 0
0 1 2 3 4 5
6 5 4 3 2 1
0 1 2 3 4 5
6 4 5 3 2 1
Bruno
Posição 3
Loops Totais 2
Loops Odd 2
Loops Even 0
0 1 2 3 4 5
6 4 5 3 2 1
0 1 2 3 4 5
6 4 5 2 3 1
Bruno
Posição 0
Loops Totais 3
Loops Odd 2
Loops Even 1
0 1 2 3 4 5
6 4 5 2 3 1
0 1 2 3 4 5
4 6 5 2 3 1
Bruno
Posição 2
Loops Totais 4
Loops Odd 2
Loops Even 2
0 1 2 3 4 5
4 6 5 2 3 1
0 1 2 3 4 5
4 6 2 5 3 1
Bruno
Posição 4
Loops Totais 5
Loops Odd 2
Loops Even 3
0 1 2 3 4 5
4 6 2 5 3 1
0 1 2 3 4 5
4 6 2 5 1 3
Bruno
Posição 1
Loops Totais 6
Loops Odd 3
Loops Even 3
0 1 2 3 4 5
4 6 2 5 1 3
0 1 2 3 4 5
4 2 6 5 1 3
Bruno
Posição 3
Loops Totais 7
Loops Odd 4
Loops Even 3
0 1 2 3 4 5
4 2 6 5 1 3
0 1 2 3 4 5
4 2 6 1 5 3
Bruno
Posição 0
Loops Totais 8
Loops Odd 4
Loops Even 4
0 1 2 3 4 5
4 2 6 1 5 3
0 1 2 3 4 5
2 4 6 1 5 3
Bruno
Posição 2
Loops Totais 9
Loops Odd 4
Loops Even 5
0 1 2 3 4 5
2 4 6 1 5 3
0 1 2 3 4 5
2 4 1 6 5 3
Bruno
Posição 4
Loops Totais 10
Loops Odd 4
Loops Even 6
0 1 2 3 4 5
2 4 1 6 5 3
0 1 2 3 4 5
2 4 1 6 3 5
Bruno
Posição 1
Loops Totais 11
Loops Odd 5
Loops Even 6
0 1 2 3 4 5
2 4 1 6 3 5
0 1 2 3 4 5
2 1 4 6 3 5
Bruno
Posição 3
Loops Totais 12
Loops Odd 6
Loops Even 6
0 1 2 3 4 5
2 1 4 6 3 5
0 1 2 3 4 5
2 1 4 3 6 5
Bruno
Posição 0
Loops Totais 13
Loops Odd 7
Loops Even 6
0 1 2 3 4 5
2 1 4 3 6 5
0 1 2 3 4 5
1 2 4 3 6 5
Bruno
Posição 2
Loops Totais 14
Loops Odd 8
Loops Even 6
0 1 2 3 4 5
1 2 4 3 6 5
0 1 2 3 4 5
1 2 3 4 6 5
Bruno
Posição 4
Loops Totais 15
Loops Odd 9
Loops Even 6
0 1 2 3 4 5
1 2 3 4 6 5
0 1 2 3 4 5
1 2 3 4 5 6
20 Loops(Bubble Sort)
Exemplo de código:
void Bolha (Vetor A; Indice item) {
Indice context, contint;
Item temp;
  for (context = item-1; context >= 1; context --) {
for (contint = 0; contint < context ; contint ++) {
if (A[contint] < A[contint +1]) {
temp = A[contint];
A[contint]= A[contint +1];
A[contint +1] = temp;
}
}
}
}
Selma
Um teste feito pela UFSC conclui que:
 Pior caso,
 Melhor caso, ou
 Médio caso,
Apresentam quase o mesmo tempo de execução.
Selma
Exemplo de código:
void Bolha (Vetor A; Indice item) {
Indice context, contint;
Item temp;
char troca;
troca = TRUE;
  for (context = item-1; (i context >= 1) && (troca == TRUE); context --) {
troca = FALSE;
for (contint = 0; contint < context ; contint ++) {
if (A[contint] < A[contint +1]) {
temp = A[contint];
A[contint]= A[contint +1];
A[contint +1] = temp;
troca = TRUE;
}
}
}
}
Selma
Selma
Jogo dos Iguais:
void Gravidade(peca **tabuleiro)
{
int temporario, queda;
posicao p;
for(p.coluna=0; p.coluna<COLUNAS; p.coluna++)
{
for(queda=0; queda<LINHAS; queda++)
{
for(p.linha=0; p.linha<LINHAS-1; p.linha++)
{
if(tabuleiro[p.linha+1][p.coluna] == 0)
{
temporario=tabuleiro[p.linha][p.coluna];
tabuleiro[p.linha][p.coluna]=tabuleiro[p.linha+1][p.coluna];
tabuleiro[p.linha+1][p.coluna]=temporario;
}
}
}
}
}
Selma
Franciele
 Necessário conhecimento profundo dos métodos
de ordenação e capacidade de avaliação do
melhor método para implementação.
Selma
 TORRÃO, C.; MARTINS, J.; COUCEIRO, M. Algoritmos de
Ordenação. Disponível em http://algos.inesc-
id.pt/~jcm/cpd/papers/2a5/Algoritmos%20de%20Ordena
%C3%A7%C3%A3o.pdf. Acesso em 13 Mai. 2011.
 SCHILDT, H. C Completo e Total– Ed Makron Books
 WANGENHEIM, A. Disponível em
http://www.inf.ufsc.br/~awangenh/Analise/Exercicio-
Ordena.html. Acesso em 13 Mai. 2011.
Técnica de busca - Bubble Sort

Técnica de busca - Bubble Sort

  • 2.
     Bruno Oliveira Franciele Martins  Ricardo Mattos  Rodrigo Asbahr  Selma Cavalheiro Franciele
  • 3.
     Introdução  Definição Método  Eficiência  Bubble Sort com Pipelining  Odd -Even Sort  Aplicações  Exemplo  Conclusão  Referências Bibliográficas  Dúvidas Franciele
  • 4.
     Ordenação:colocar oselementos em uma sequência de informações, ou dados, em uma relação de ordem predefinida.  Um algoritmo que ordena um conjunto, geralmente representado em um vetor, é chamado de algoritmo de ordenação.  Acessa dados de modo: Franciele
  • 5.
     Para obtermosos dados ordenados, temos duas alternativas: Franciele
  • 6.
     Bubble sort,é o algoritmo de ordenação mais conhecido e popular  Simples de entender e implementar  Usa a estratégia de “comparação e troca”, que é aplicada em várias iterações sobre os dados a serem ordenados Franciele
  • 7.
    77 9911 00  Aidéia é fazer os elementos flutuarem Franciele
  • 8.
     Pretende-se ordenaros elementos de um array.  Serão ordenados desde a primeira até à última posição, na qual em cada iteração da ordenação é calculado o maior/menor valor dos elementos que ainda faltam ordenar. 10 8 6 2 16 4 18 11 14 12 Ricardo
  • 9.
    10 8 62 16 4 18 11 14 12 108 6 2 16 4 18 11 14 12 108 6 2 16 4 18 11 14 12 Compara os dois elementos e troca Compara os dois elementos e troca Compara os dois elementos e troca 108 6 2 16 4 18 11 14 12 Compara os dois elementos e troca Ricardo
  • 10.
     No finalda 1ª iteração:  O maior elemento está em último lugar. Pode-se dizer que o elemento nº 18 saltou “borbulhou” para a sua posição correta.  O processo volta a repetir-se, só que desta vez ele pode parar antes do elemento nº 18, dado que ele já se encontra no lugar correto. Ricardo
  • 11.
     Tempos deOrdenação (sendo n o número de elementos a ordenar)  Obs.: A complexidade desse algoritmo é de Ordem quadrática. Por isso, ele não é recomendado para programas que precisem de velocidade e operem com quantidade elevada de dados.  Melhor caso: n2 /2 Verifica-se quando o vetor já está ordenado.  Pior caso: n2 Verifica-se quando o vetor está ordenado na ordem inversa. Ricardo
  • 12.
     O pipeliningé possivel pois as iterações de cada fase vão percorrendo o vector, não necessitando posteriormente de valores anteriores  Ou seja, quando a primeira fase já se encontra na comparação de x2 e x3, a segunda fase já pode usar os valores x0 e x1 para comparação. Rodrigo
  • 13.
  • 14.
    259131721 259132117 259211317 252191713 221517913 Fase 1 Fase 1 Fase1 Fase 1 Fase 1 Fase 2 Fase 2 Fase 2Fase 3 Rodrigo
  • 15.
     É umavariante do algoritmo Bubble Sort  Constituído por duas fases distintas: ◦ Fase even (par) ◦ Fase odd (ímpar)  Na fase even (par) comparam-se as posições (índices) pares com a posição seguinte a cada uma delas  Na fase odd (ímpar) comparam-se as posições (índices) ímpares com a posição seguinte a cada uma delas Bruno
  • 16.
    Bruno Posição 1 Loops Totais1 Loops Odd 1 Loops Even 0 0 1 2 3 4 5 6 5 4 3 2 1 0 1 2 3 4 5 6 4 5 3 2 1
  • 17.
    Bruno Posição 3 Loops Totais2 Loops Odd 2 Loops Even 0 0 1 2 3 4 5 6 4 5 3 2 1 0 1 2 3 4 5 6 4 5 2 3 1
  • 18.
    Bruno Posição 0 Loops Totais3 Loops Odd 2 Loops Even 1 0 1 2 3 4 5 6 4 5 2 3 1 0 1 2 3 4 5 4 6 5 2 3 1
  • 19.
    Bruno Posição 2 Loops Totais4 Loops Odd 2 Loops Even 2 0 1 2 3 4 5 4 6 5 2 3 1 0 1 2 3 4 5 4 6 2 5 3 1
  • 20.
    Bruno Posição 4 Loops Totais5 Loops Odd 2 Loops Even 3 0 1 2 3 4 5 4 6 2 5 3 1 0 1 2 3 4 5 4 6 2 5 1 3
  • 21.
    Bruno Posição 1 Loops Totais6 Loops Odd 3 Loops Even 3 0 1 2 3 4 5 4 6 2 5 1 3 0 1 2 3 4 5 4 2 6 5 1 3
  • 22.
    Bruno Posição 3 Loops Totais7 Loops Odd 4 Loops Even 3 0 1 2 3 4 5 4 2 6 5 1 3 0 1 2 3 4 5 4 2 6 1 5 3
  • 23.
    Bruno Posição 0 Loops Totais8 Loops Odd 4 Loops Even 4 0 1 2 3 4 5 4 2 6 1 5 3 0 1 2 3 4 5 2 4 6 1 5 3
  • 24.
    Bruno Posição 2 Loops Totais9 Loops Odd 4 Loops Even 5 0 1 2 3 4 5 2 4 6 1 5 3 0 1 2 3 4 5 2 4 1 6 5 3
  • 25.
    Bruno Posição 4 Loops Totais10 Loops Odd 4 Loops Even 6 0 1 2 3 4 5 2 4 1 6 5 3 0 1 2 3 4 5 2 4 1 6 3 5
  • 26.
    Bruno Posição 1 Loops Totais11 Loops Odd 5 Loops Even 6 0 1 2 3 4 5 2 4 1 6 3 5 0 1 2 3 4 5 2 1 4 6 3 5
  • 27.
    Bruno Posição 3 Loops Totais12 Loops Odd 6 Loops Even 6 0 1 2 3 4 5 2 1 4 6 3 5 0 1 2 3 4 5 2 1 4 3 6 5
  • 28.
    Bruno Posição 0 Loops Totais13 Loops Odd 7 Loops Even 6 0 1 2 3 4 5 2 1 4 3 6 5 0 1 2 3 4 5 1 2 4 3 6 5
  • 29.
    Bruno Posição 2 Loops Totais14 Loops Odd 8 Loops Even 6 0 1 2 3 4 5 1 2 4 3 6 5 0 1 2 3 4 5 1 2 3 4 6 5
  • 30.
    Bruno Posição 4 Loops Totais15 Loops Odd 9 Loops Even 6 0 1 2 3 4 5 1 2 3 4 6 5 0 1 2 3 4 5 1 2 3 4 5 6 20 Loops(Bubble Sort)
  • 31.
    Exemplo de código: voidBolha (Vetor A; Indice item) { Indice context, contint; Item temp;   for (context = item-1; context >= 1; context --) { for (contint = 0; contint < context ; contint ++) { if (A[contint] < A[contint +1]) { temp = A[contint]; A[contint]= A[contint +1]; A[contint +1] = temp; } } } } Selma
  • 32.
    Um teste feitopela UFSC conclui que:  Pior caso,  Melhor caso, ou  Médio caso, Apresentam quase o mesmo tempo de execução. Selma
  • 33.
    Exemplo de código: voidBolha (Vetor A; Indice item) { Indice context, contint; Item temp; char troca; troca = TRUE;   for (context = item-1; (i context >= 1) && (troca == TRUE); context --) { troca = FALSE; for (contint = 0; contint < context ; contint ++) { if (A[contint] < A[contint +1]) { temp = A[contint]; A[contint]= A[contint +1]; A[contint +1] = temp; troca = TRUE; } } } } Selma
  • 34.
  • 35.
    void Gravidade(peca **tabuleiro) { inttemporario, queda; posicao p; for(p.coluna=0; p.coluna<COLUNAS; p.coluna++) { for(queda=0; queda<LINHAS; queda++) { for(p.linha=0; p.linha<LINHAS-1; p.linha++) { if(tabuleiro[p.linha+1][p.coluna] == 0) { temporario=tabuleiro[p.linha][p.coluna]; tabuleiro[p.linha][p.coluna]=tabuleiro[p.linha+1][p.coluna]; tabuleiro[p.linha+1][p.coluna]=temporario; } } } } } Selma
  • 36.
  • 37.
     Necessário conhecimentoprofundo dos métodos de ordenação e capacidade de avaliação do melhor método para implementação. Selma
  • 38.
     TORRÃO, C.;MARTINS, J.; COUCEIRO, M. Algoritmos de Ordenação. Disponível em http://algos.inesc- id.pt/~jcm/cpd/papers/2a5/Algoritmos%20de%20Ordena %C3%A7%C3%A3o.pdf. Acesso em 13 Mai. 2011.  SCHILDT, H. C Completo e Total– Ed Makron Books  WANGENHEIM, A. Disponível em http://www.inf.ufsc.br/~awangenh/Analise/Exercicio- Ordena.html. Acesso em 13 Mai. 2011.