SlideShare uma empresa Scribd logo
Técnica de busca - Bubble Sort
 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

Mais conteúdo relacionado

Mais procurados

Ordenação
OrdenaçãoOrdenação
Ordenação
Sérgio Souza Costa
 
Bubble Sort
Bubble SortBubble Sort
Bubble Sort
geeortiz
 
Introdução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos BásicosIntrodução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos Básicos
Elaine Cecília Gatto
 
Stored Procedures and Triggers
Stored Procedures and TriggersStored Procedures and Triggers
Stored Procedures and Triggers
flaviognm
 
Pesquisa e Ordenação - Aula 07 - Métodos de Ordenação (Bin sort - Bucket sort)
Pesquisa e Ordenação - Aula 07 - Métodos de Ordenação (Bin sort - Bucket sort)Pesquisa e Ordenação - Aula 07 - Métodos de Ordenação (Bin sort - Bucket sort)
Pesquisa e Ordenação - Aula 07 - Métodos de Ordenação (Bin sort - Bucket sort)
Leinylson Fontinele
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
Daniel Fernandes Costa
 
Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...
Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...
Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...
Leinylson Fontinele
 
Análise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaAnálise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise Assintótica
Delacyr Ferreira
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao Python
Marcio Palheta
 
Sistema de gerenciamento de banco de dados
Sistema de gerenciamento de banco de dadosSistema de gerenciamento de banco de dados
Sistema de gerenciamento de banco de dados
Juh Souza
 
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Leinylson Fontinele
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
Adriano Teixeira de Souza
 
Árvores Rubro Negra
Árvores Rubro NegraÁrvores Rubro Negra
Árvores Rubro Negra
Sérgio Souza Costa
 
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Leinylson Fontinele
 
Árvores Rubro Negras
Árvores Rubro NegrasÁrvores Rubro Negras
Árvores Rubro Negras
Kholtar Rasklof
 
Insertion sort
Insertion sortInsertion sort
Insertion sort
Abdelrahman Saleh
 
Lista Duplamente Encadeada
Lista Duplamente EncadeadaLista Duplamente Encadeada
Lista Duplamente Encadeada
Matheus Santos Almeida
 
Dicas e Princípios Básicos do Linux
Dicas e Princípios Básicos do LinuxDicas e Princípios Básicos do Linux
Dicas e Princípios Básicos do Linux
Wellington Oliveira
 
Insertion Sort
Insertion SortInsertion Sort
Insertion Sort
Daniel Arndt Alves
 
Bubble Sort Algorithm Presentation
Bubble Sort Algorithm Presentation Bubble Sort Algorithm Presentation
Bubble Sort Algorithm Presentation
AhmedAlbutty
 

Mais procurados (20)

Ordenação
OrdenaçãoOrdenação
Ordenação
 
Bubble Sort
Bubble SortBubble Sort
Bubble Sort
 
Introdução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos BásicosIntrodução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos Básicos
 
Stored Procedures and Triggers
Stored Procedures and TriggersStored Procedures and Triggers
Stored Procedures and Triggers
 
Pesquisa e Ordenação - Aula 07 - Métodos de Ordenação (Bin sort - Bucket sort)
Pesquisa e Ordenação - Aula 07 - Métodos de Ordenação (Bin sort - Bucket sort)Pesquisa e Ordenação - Aula 07 - Métodos de Ordenação (Bin sort - Bucket sort)
Pesquisa e Ordenação - Aula 07 - Métodos de Ordenação (Bin sort - Bucket sort)
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...
Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...
Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...
 
Análise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaAnálise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise Assintótica
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao Python
 
Sistema de gerenciamento de banco de dados
Sistema de gerenciamento de banco de dadosSistema de gerenciamento de banco de dados
Sistema de gerenciamento de banco de dados
 
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Árvores Rubro Negra
Árvores Rubro NegraÁrvores Rubro Negra
Árvores Rubro Negra
 
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
 
Árvores Rubro Negras
Árvores Rubro NegrasÁrvores Rubro Negras
Árvores Rubro Negras
 
Insertion sort
Insertion sortInsertion sort
Insertion sort
 
Lista Duplamente Encadeada
Lista Duplamente EncadeadaLista Duplamente Encadeada
Lista Duplamente Encadeada
 
Dicas e Princípios Básicos do Linux
Dicas e Princípios Básicos do LinuxDicas e Princípios Básicos do Linux
Dicas e Princípios Básicos do Linux
 
Insertion Sort
Insertion SortInsertion Sort
Insertion Sort
 
Bubble Sort Algorithm Presentation
Bubble Sort Algorithm Presentation Bubble Sort Algorithm Presentation
Bubble Sort Algorithm Presentation
 

Mais de Bruno Oliveira

Construtivismo Imersivo - Revisão Sistemática da Literatura
Construtivismo Imersivo - Revisão Sistemática da LiteraturaConstrutivismo Imersivo - Revisão Sistemática da Literatura
Construtivismo Imersivo - Revisão Sistemática da Literatura
Bruno Oliveira
 
Visão geral de big data e mercado financeiro
Visão geral de big data e mercado financeiroVisão geral de big data e mercado financeiro
Visão geral de big data e mercado financeiro
Bruno Oliveira
 
Meio Ambiente com IoT na USP
Meio Ambiente com IoT na USPMeio Ambiente com IoT na USP
Meio Ambiente com IoT na USP
Bruno Oliveira
 
Wear Pay
Wear PayWear Pay
Wear Pay
Bruno Oliveira
 
Explorando novas tecnicas de comunicacao
Explorando novas tecnicas de comunicacaoExplorando novas tecnicas de comunicacao
Explorando novas tecnicas de comunicacao
Bruno Oliveira
 
Pensamento estratégico e geração de vantagem competitiva
Pensamento estratégico e geração de vantagem competitivaPensamento estratégico e geração de vantagem competitiva
Pensamento estratégico e geração de vantagem competitiva
Bruno Oliveira
 
Projeto de pesquisa - Tecnologias imersivas e letramento financeiro
Projeto de pesquisa - Tecnologias imersivas e letramento financeiroProjeto de pesquisa - Tecnologias imersivas e letramento financeiro
Projeto de pesquisa - Tecnologias imersivas e letramento financeiro
Bruno Oliveira
 
Computação em Névoa - Introdução, estado da arte e aplicações
Computação em Névoa - Introdução, estado da arte e aplicaçõesComputação em Névoa - Introdução, estado da arte e aplicações
Computação em Névoa - Introdução, estado da arte e aplicações
Bruno Oliveira
 
EmoFindAR - Avaliação de jogo de realidade aumentada em crianças de escola pr...
EmoFindAR - Avaliação de jogo de realidade aumentada em crianças de escola pr...EmoFindAR - Avaliação de jogo de realidade aumentada em crianças de escola pr...
EmoFindAR - Avaliação de jogo de realidade aumentada em crianças de escola pr...
Bruno Oliveira
 
Revisão do uso de Realidade Virtual na Educação
Revisão do uso de Realidade Virtual na EducaçãoRevisão do uso de Realidade Virtual na Educação
Revisão do uso de Realidade Virtual na Educação
Bruno Oliveira
 
Monografia Computação na Névoa
Monografia Computação na NévoaMonografia Computação na Névoa
Monografia Computação na Névoa
Bruno Oliveira
 
BC - Feedbacks
BC - FeedbacksBC - Feedbacks
BC - Feedbacks
Bruno Oliveira
 
Analise da proposta de valor (fintech)
Analise da proposta de valor (fintech)Analise da proposta de valor (fintech)
Analise da proposta de valor (fintech)
Bruno Oliveira
 
Humaniza tecnocare
Humaniza tecnocareHumaniza tecnocare
Humaniza tecnocare
Bruno Oliveira
 
Caso Michigan - ITS (Sistema de Transporte Inteligente)
Caso Michigan - ITS (Sistema de Transporte Inteligente)Caso Michigan - ITS (Sistema de Transporte Inteligente)
Caso Michigan - ITS (Sistema de Transporte Inteligente)
Bruno Oliveira
 
Modelagem de sistemas - Pensamento sistêmico
Modelagem de sistemas - Pensamento sistêmicoModelagem de sistemas - Pensamento sistêmico
Modelagem de sistemas - Pensamento sistêmico
Bruno Oliveira
 
Alocação dinâmica em C
Alocação dinâmica em CAlocação dinâmica em C
Alocação dinâmica em C
Bruno Oliveira
 
Política e cultura de segurança da informação - aspectos burocráticos
Política e cultura de segurança da informação - aspectos burocráticosPolítica e cultura de segurança da informação - aspectos burocráticos
Política e cultura de segurança da informação - aspectos burocráticos
Bruno Oliveira
 
Pensando comunicação homem máquina (em termos de ergonomia)
Pensando comunicação homem máquina (em termos de ergonomia)Pensando comunicação homem máquina (em termos de ergonomia)
Pensando comunicação homem máquina (em termos de ergonomia)
Bruno Oliveira
 
Labirintos 2D - Abordagem de grafos
Labirintos 2D - Abordagem de grafosLabirintos 2D - Abordagem de grafos
Labirintos 2D - Abordagem de grafos
Bruno Oliveira
 

Mais de Bruno Oliveira (20)

Construtivismo Imersivo - Revisão Sistemática da Literatura
Construtivismo Imersivo - Revisão Sistemática da LiteraturaConstrutivismo Imersivo - Revisão Sistemática da Literatura
Construtivismo Imersivo - Revisão Sistemática da Literatura
 
Visão geral de big data e mercado financeiro
Visão geral de big data e mercado financeiroVisão geral de big data e mercado financeiro
Visão geral de big data e mercado financeiro
 
Meio Ambiente com IoT na USP
Meio Ambiente com IoT na USPMeio Ambiente com IoT na USP
Meio Ambiente com IoT na USP
 
Wear Pay
Wear PayWear Pay
Wear Pay
 
Explorando novas tecnicas de comunicacao
Explorando novas tecnicas de comunicacaoExplorando novas tecnicas de comunicacao
Explorando novas tecnicas de comunicacao
 
Pensamento estratégico e geração de vantagem competitiva
Pensamento estratégico e geração de vantagem competitivaPensamento estratégico e geração de vantagem competitiva
Pensamento estratégico e geração de vantagem competitiva
 
Projeto de pesquisa - Tecnologias imersivas e letramento financeiro
Projeto de pesquisa - Tecnologias imersivas e letramento financeiroProjeto de pesquisa - Tecnologias imersivas e letramento financeiro
Projeto de pesquisa - Tecnologias imersivas e letramento financeiro
 
Computação em Névoa - Introdução, estado da arte e aplicações
Computação em Névoa - Introdução, estado da arte e aplicaçõesComputação em Névoa - Introdução, estado da arte e aplicações
Computação em Névoa - Introdução, estado da arte e aplicações
 
EmoFindAR - Avaliação de jogo de realidade aumentada em crianças de escola pr...
EmoFindAR - Avaliação de jogo de realidade aumentada em crianças de escola pr...EmoFindAR - Avaliação de jogo de realidade aumentada em crianças de escola pr...
EmoFindAR - Avaliação de jogo de realidade aumentada em crianças de escola pr...
 
Revisão do uso de Realidade Virtual na Educação
Revisão do uso de Realidade Virtual na EducaçãoRevisão do uso de Realidade Virtual na Educação
Revisão do uso de Realidade Virtual na Educação
 
Monografia Computação na Névoa
Monografia Computação na NévoaMonografia Computação na Névoa
Monografia Computação na Névoa
 
BC - Feedbacks
BC - FeedbacksBC - Feedbacks
BC - Feedbacks
 
Analise da proposta de valor (fintech)
Analise da proposta de valor (fintech)Analise da proposta de valor (fintech)
Analise da proposta de valor (fintech)
 
Humaniza tecnocare
Humaniza tecnocareHumaniza tecnocare
Humaniza tecnocare
 
Caso Michigan - ITS (Sistema de Transporte Inteligente)
Caso Michigan - ITS (Sistema de Transporte Inteligente)Caso Michigan - ITS (Sistema de Transporte Inteligente)
Caso Michigan - ITS (Sistema de Transporte Inteligente)
 
Modelagem de sistemas - Pensamento sistêmico
Modelagem de sistemas - Pensamento sistêmicoModelagem de sistemas - Pensamento sistêmico
Modelagem de sistemas - Pensamento sistêmico
 
Alocação dinâmica em C
Alocação dinâmica em CAlocação dinâmica em C
Alocação dinâmica em C
 
Política e cultura de segurança da informação - aspectos burocráticos
Política e cultura de segurança da informação - aspectos burocráticosPolítica e cultura de segurança da informação - aspectos burocráticos
Política e cultura de segurança da informação - aspectos burocráticos
 
Pensando comunicação homem máquina (em termos de ergonomia)
Pensando comunicação homem máquina (em termos de ergonomia)Pensando comunicação homem máquina (em termos de ergonomia)
Pensando comunicação homem máquina (em termos de ergonomia)
 
Labirintos 2D - Abordagem de grafos
Labirintos 2D - Abordagem de grafosLabirintos 2D - Abordagem de grafos
Labirintos 2D - Abordagem de grafos
 

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 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
  • 5.  Para obtermos os 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  A idéia é fazer os elementos flutuarem Franciele
  • 8.  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
  • 9. 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
  • 10.  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
  • 11.  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
  • 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
  • 14. 259131721 259132117 259211317 252191713 221517913 Fase 1 Fase 1 Fase 1 Fase 1 Fase 1 Fase 2 Fase 2 Fase 2Fase 3 Rodrigo
  • 15.  É 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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
  • 30. 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)
  • 31. 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
  • 32. Um teste feito pela 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: 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
  • 35. 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
  • 37.  Necessário conhecimento profundo 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.