Universidade Presbiteriana Mackenzie	
  
Aula	
  3:	
  Bubble	
  Sort	
  
Prof. Ms. Daniel Arndt Alves
Faculdade	
  de	
  Computação	
  e	
  Informá;ca	
  
Computação e Informática
Faculdade de
Estrutura	
  de	
  
Dados	
  II	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   1	
  
Tópicos	
  da	
  Aula	
  
•  Ordenação	
  de	
  Vetores	
  
•  Algoritmos	
  de	
  Ordenação	
  
•  Bubble	
  Sort	
  
•  Complexidade	
  Computacional	
  
•  Exemplo	
  Animado	
  
•  Observações	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   2	
  
Ordenação de Vetores
•  Por vezes é necessário ordenar um vetor de
forma crescente ou decrescente.
•  Por vezes é necessário que as strings
contidas num vetor estejam ordenadas
alfabeticamente.
•  Algoritmos de ordenação são fáceis de
adaptar de forma a ordenar qualquer que
seja a ordem que se pretende.
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   3	
  
Algoritmos	
  de	
  Ordenação	
  
•  Ordenação	
  =	
  Sort	
  
•  Rearranjar	
  os	
  elementos	
  de	
  
um	
  array	
  (banco	
  de	
  dados)	
  de	
  modo	
  a	
  que	
  
obedeçam	
  a	
  um	
  certo	
  critério	
  de	
  ordem.	
  
– Ordem	
  numérica	
  
– Ordem	
  lexicográfica	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   4	
  
Algoritmos	
  de	
  Ordenação	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   5	
  
512354277 101
1 2 3 4 5 6
5 12 35 42 77 101
1 2 3 4 5 6
Algoritmos	
  de	
  Ordenação	
  
•  Metodologias:	
  troca,	
  inserção,	
  
seleção,	
  intercalação,	
  
distribuição	
  de	
  chaves	
  
– Chave:	
  componente	
  de	
  uma	
  
estrutura,	
  ou	
  de	
  um	
  registro	
  de	
  banco	
  de	
  dados,	
  
segundo	
  o	
  qual	
  se	
  realiza	
  a	
  ordenação.	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   6	
  
Bubble	
  Sort	
  
•  Percorrer	
  a	
  coleção	
  e	
  elementos	
  
– Movimentação	
  do	
  início	
  ao	
  fim	
  do	
  vetor	
  
– “Bubble” o	
  maior	
  valor	
  ao	
  final	
  do	
  vetor	
  
uYlizando	
  pares	
  de	
  comparações	
  e	
  trocas	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   7	
  
512354277 101
1 2 3 4 5 6
Bubble	
  Sort	
  
•  Percorrer	
  a	
  coleção	
  e	
  elementos	
  
– Movimentação	
  do	
  início	
  ao	
  fim	
  do	
  vetor	
  
– “Bubble” o	
  maior	
  valor	
  ao	
  final	
  do	
  vetor	
  
uYlizando	
  pares	
  de	
  comparações	
  e	
  trocas	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   8	
  
512354277 101
1 2 3 4 5 6
Swap42 77
Bubble	
  Sort	
  
•  Percorrer	
  a	
  coleção	
  e	
  elementos	
  
– Movimentação	
  do	
  início	
  ao	
  fim	
  do	
  vetor	
  
– “Bubble” o	
  maior	
  valor	
  ao	
  final	
  do	
  vetor	
  
uYlizando	
  pares	
  de	
  comparações	
  e	
  trocas	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   9	
  
512357742 101
1 2 3 4 5 6
Swap35 77
Bubble	
  Sort	
  
•  Percorrer	
  a	
  coleção	
  e	
  elementos	
  
– Movimentação	
  do	
  início	
  ao	
  fim	
  do	
  vetor	
  
– “Bubble” o	
  maior	
  valor	
  ao	
  final	
  do	
  vetor	
  
uYlizando	
  pares	
  de	
  comparações	
  e	
  trocas	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   10	
  
512773542 101
1 2 3 4 5 6
Swap12 77
Bubble	
  Sort	
  
•  Percorrer	
  a	
  coleção	
  e	
  elementos	
  
– Movimentação	
  do	
  início	
  ao	
  fim	
  do	
  vetor	
  
– “Bubble” o	
  maior	
  valor	
  ao	
  final	
  do	
  vetor	
  
uYlizando	
  pares	
  de	
  comparações	
  e	
  trocas	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   11	
  
577123542 101
1 2 3 4 5 6
Não há necessidade de swap
Bubble	
  Sort	
  
•  Percorrer	
  a	
  coleção	
  e	
  elementos	
  
– Movimentação	
  do	
  início	
  ao	
  fim	
  do	
  vetor	
  
– “Bubble” o	
  maior	
  valor	
  ao	
  final	
  do	
  vetor	
  
uYlizando	
  pares	
  de	
  comparações	
  e	
  trocas	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   12	
  
577123542 101
1 2 3 4 5 6
Swap5 101
Bubble	
  Sort	
  
•  Percorrer	
  a	
  coleção	
  e	
  elementos	
  
– Movimentação	
  do	
  início	
  ao	
  fim	
  do	
  vetor	
  
– “Bubble” o	
  maior	
  valor	
  ao	
  final	
  do	
  vetor	
  
uYlizando	
  pares	
  de	
  comparações	
  e	
  trocas	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   13	
  
77123542 5
1 2 3 4 5 6
101
Maior valor posicionado corretamente
Bubble	
  Sort	
  
•  Note	
  que	
  somente	
  o	
  elemento	
  de	
  maior	
  valor	
  
está	
  posicionado	
  corretamente	
  
•  Todos	
  os	
  demais	
  valores	
  conYnuam	
  fora	
  de	
  
ordem	
  
•  Então,	
  precisamos	
  repeYr	
  este	
  processo	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   14	
  
77123542 5
1 2 3 4 5 6
101
Maior valor posicionado corretamente
Bubble	
  Sort	
  
•  RepeYr	
  quantas	
  vezes?	
  
– Se	
  temos	
  N	
  elementos…	
  
– Se,	
  a	
  cada	
  iteração,	
  nós	
  posicionamos	
  um	
  
elemento	
  corretamente…	
  
– Então	
  nós	
  repeYmos	
  o	
  processo	
  N	
  –	
  1	
  vezes.	
  
– Desta	
  forma,	
  garanYmos	
  o	
  correto	
  
posicionamento	
  dos	
  N	
  elementos.	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   15	
  
Bubble	
  Sort	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   16	
  
77123542 5
1 2 3 4 5 6
101
5421235 77
1 2 3 4 5 6
101
4253512 77
1 2 3 4 5 6
101
4235512 77
1 2 3 4 5 6
101
4235125 77
1 2 3 4 5 6
101
N-1
Bubble	
  Sort	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   17	
  
12354277 101
1 2 3 4 5 6
5
77123542 5
1 2 3 4 5 6
101
5421235 77
1 2 3 4 5 6
101
4253512 77
1 2 3 4 5 6
101
4235512 77
1 2 3 4 5 6
101
Bubble	
  Sort	
  
•  Na	
  Nésima	
  iteração, precisamos apenas de	
  
MAX-­‐N	
  comparações.	
  
•  Por	
  exemplo:	
  
– Esa	
  é	
  a	
  4a	
  iteração	
  
– MAX	
  é	
  6	
  
– Precisamos	
  apenas	
  de	
  2	
  comparações	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   18	
  
4253512 77
1 2 3 4 5 6
101
Bubble	
  Sort	
  
public class Sort {
public void bubbleSort(int[] v, int n){
int j, k, limit;
limit = n-1
while (true){
k = 0;
for (j = 0; j <= limit - 1; j++){
if (v[j] > v[j+1]){
swap(v, j, j+1);
k = j;
}
}
if (k == 0)
break;
limit = k;
}
}
}
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   19	
  
O	
  Método	
  swap	
  
/**
* Troca a posição de dois elementos de um array de inteiros
* @param v um int array
* @param i índice do elemento a ser trocado
* @param j índice do elemento a ser trocado
*/
public void swap(int[] v, int i, int j){
int temp;
temp = v[i];
v[i] = v[j];
v[j] = temp;
}
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   20	
  
Sobrecarga	
  
public void bubbleSort(int[] v){
bubbleSort(v, v.length);
}
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   21	
  
Invocando	
  o	
  método	
  bubbleSort
public static void main(String[] args){
Sort sort = new Sort();
int[] v;
v = new int[50];
...
sort.bubbleSort(v);
...
int n = umValor;
sort.bubbleSort(v, n);
}
	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   22	
  
Complexidade	
  Computacional	
  
•  Complexidade	
  no	
  tempo:	
  comportamento	
  do	
  
algoritmo	
  no	
  tempo,	
  em	
  função	
  do	
  tamanho	
  
da	
  entrada.	
  
•  Complexidade	
  no	
  espaço:	
  consumo	
  de	
  
memória	
  do	
  algoritmo,	
  em	
  função	
  do	
  
tamanho	
  da	
  entrada.	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   23	
  
Complexidade	
  Computacional	
  
•  Bubble	
  Sort:	
  o	
  tempo	
  gasto	
  na	
  execução	
  do	
  
algoritmo	
  varia	
  em	
  ordem	
  quadráYca	
  em	
  
relação	
  ao	
  número	
  de	
  elementos	
  a	
  serem	
  
ordenados.	
  
– T	
  =	
  O(n2)	
  –	
  Notação	
  “Big	
  O”	
  
– AYvidades	
  mais	
  custosas:	
  
•  Comparações	
  
•  Trocas	
  de	
  Posição	
  (swap)	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   24	
  
Complexidade	
  Computacional	
  
•  Análise	
  informal	
  com	
  base	
  na	
  operação	
  mais	
  
custosa,	
  que	
  é	
  a	
  comparação	
  
– n	
  etapas	
  no	
  pior	
  caso	
  
– Na	
  primeira	
  etapa,	
  são	
  feitas	
  n-­‐1	
  comparações	
  e	
  
trocas,	
  na	
  segunda	
  n-­‐2	
  e	
  assim	
  por	
  diante.	
  
– Temos	
  então,	
  a	
  soma	
  dos	
  termos	
  de	
  uma	
  
progressão	
  aritméYca:	
  
•  (n-­‐1)	
  +	
  (n-­‐2)	
  +	
  …	
  +	
  1	
  
•  	
  	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   25	
  
Total =
n⋅ n −1( )
2
⇒ O n2
( )
Complexidade	
  Computacional	
  
•  Melhor	
  caso:	
  vetor	
  ordenado	
  
•  Pior	
  caso:	
  vetor	
  inverYdo	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   26	
  
Exemplo	
  Animado	
  
674523 14 6 3398 42
1 2 3 4 5 6 7 8
to_do
index
7
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   27	
  
Exemplo	
  Animado	
  
674523 14 6 3398 42
1 2 3 4 5 6 7 8
to_do
index
7
1
N 8 fez_swap false
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   28	
  
Exemplo	
  Animado	
  
674523 14 6 3398 42
1 2 3 4 5 6 7 8
to_do
index
7
1
N 8
Swap
fez_swap false
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   29	
  
Exemplo	
  Animado	
  
674598 14 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
1
N 8
Swap
fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   30	
  
Exemplo	
  Animado	
  
674598 14 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
2
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   31	
  
Exemplo	
  Animado	
  
674598 14 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
2
N 8
Swap
fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   32	
  
Exemplo	
  Animado	
  
679845 14 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
2
N 8
Swap
fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   33	
  
Exemplo	
  Animado	
  
679845 14 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
3
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   34	
  
Exemplo	
  Animado	
  
679845 14 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
3
N 8
Swap
fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   35	
  
Exemplo	
  Animado	
  
671445 98 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
3
N 8
Swap
fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   36	
  
Exemplo	
  Animado	
  
671445 98 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
4
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   37	
  
Exemplo	
  Animado	
  
671445 98 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
4
N 8
Swap
fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   38	
  
Exemplo	
  Animado	
  
671445 6 98 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
4
N 8
Swap
fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   39	
  
Exemplo	
  Animado	
  
671445 6 98 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
5
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   40	
  
Exemplo	
  Animado	
  
671445 6 98 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
5
N 8
Swap
fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   41	
  
Exemplo	
  Animado	
  
981445 6 67 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
5
N 8
Swap
fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   42	
  
Exemplo	
  Animado	
  
981445 6 67 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
6
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   43	
  
Exemplo	
  Animado	
  
981445 6 67 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
6
N 8
Swap
fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   44	
  
Exemplo	
  Animado	
  
331445 6 67 9823 42
1 2 3 4 5 6 7 8
to_do
index
7
6
N 8
Swap
fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   45	
  
Exemplo	
  Animado	
  
331445 6 67 9823 42
1 2 3 4 5 6 7 8
to_do
index
7
7
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   46	
  
Exemplo	
  Animado	
  
331445 6 67 9823 42
1 2 3 4 5 6 7 8
to_do
index
7
7
N 8
Swap
fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   47	
  
Exemplo	
  Animado	
  
331445 6 67 4223 98
1 2 3 4 5 6 7 8
to_do
index
7
7
N 8
Swap
fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   48	
  
Exemplo	
  Animado	
  
331445 6 67 4223 98
1 2 3 4 5 6 7 8
to_do
index
7
8
N 8
Fim da Primeira Iteração
did_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   49	
  
Exemplo	
  Animado	
  
331445 6 67 4223 98
1 2 3 4 5 6 7 8
to_do
index
6
1
N 8 fez_swap false
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   50	
  
Exemplo	
  Animado	
  
331445 6 67 4223 98
1 2 3 4 5 6 7 8
to_do
index
6
1
N 8 fez_swap false
No Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   51	
  
Exemplo	
  Animado	
  
331445 6 67 4223 98
1 2 3 4 5 6 7 8
to_do
index
6
2
N 8 fez_swap false
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   52	
  
Exemplo	
  Animado	
  
331445 6 67 4223 98
1 2 3 4 5 6 7 8
to_do
index
6
2
N 8 fez_swap false
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   53	
  
Exemplo	
  Animado	
  
334514 6 67 4223 98
1 2 3 4 5 6 7 8
to_do
index
6
2
N 8 fez_swap true
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   54	
  
Exemplo	
  Animado	
  
334514 6 67 4223 98
1 2 3 4 5 6 7 8
to_do
index
6
3
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   55	
  
Exemplo	
  Animado	
  
334514 6 67 4223 98
1 2 3 4 5 6 7 8
to_do
index
6
3
N 8 fez_swap true
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   56	
  
Exemplo	
  Animado	
  
33614 45 67 4223 98
1 2 3 4 5 6 7 8
to_do
index
6
3
N 8 fez_swap true
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   57	
  
Exemplo	
  Animado	
  
33614 45 67 4223 98
1 2 3 4 5 6 7 8
to_do
index
6
4
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   58	
  
Exemplo	
  Animado	
  
33614 45 67 4223 98
1 2 3 4 5 6 7 8
to_do
index
6
4
N 8 fez_swap true
No Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   59	
  
Exemplo	
  Animado	
  
33614 45 67 4223 98
1 2 3 4 5 6 7 8
to_do
index
6
5
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   60	
  
Exemplo	
  Animado	
  
33614 45 67 4223 98
1 2 3 4 5 6 7 8
to_do
index
6
5
N 8 fez_swap true
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   61	
  
Exemplo	
  Animado	
  
67614 45 33 4223 98
1 2 3 4 5 6 7 8
to_do
index
6
5
N 8 fez_swap true
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   62	
  
Exemplo	
  Animado	
  
67614 45 33 4223 98
1 2 3 4 5 6 7 8
to_do
index
6
6
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   63	
  
Exemplo	
  Animado	
  
67614 45 33 4223 98
1 2 3 4 5 6 7 8
to_do
index
6
6
N 8 fez_swap true
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   64	
  
Exemplo	
  Animado	
  
42614 45 33 6723 98
1 2 3 4 5 6 7 8
to_do
index
6
6
N 8 fez_swap true
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   65	
  
Exemplo	
  Animado	
  
42614 45 33 6723 98
1 2 3 4 5 6 7 8
to_do
index
6
7
N 8 fez_swap true
Fim da Segunda Iteração
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   66	
  
Exemplo	
  Animado	
  
42614 45 33 6723 98
1 2 3 4 5 6 7 8
to_do
index
5
1
N 8 fez_swap false
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   67	
  
Exemplo	
  Animado	
  
42614 45 33 6723 98
1 2 3 4 5 6 7 8
to_do
index
5
1
N 8 fez_swap false
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   68	
  
Exemplo	
  Animado	
  
42623 45 33 6714 98
1 2 3 4 5 6 7 8
to_do
index
5
1
N 8 fez_swap true
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   69	
  
Exemplo	
  Animado	
  
42623 45 33 6714 98
1 2 3 4 5 6 7 8
to_do
index
5
2
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   70	
  
Exemplo	
  Animado	
  
42623 45 33 6714 98
1 2 3 4 5 6 7 8
to_do
index
5
2
N 8 fez_swap true
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   71	
  
Exemplo	
  Animado	
  
42236 45 33 6714 98
1 2 3 4 5 6 7 8
to_do
index
5
2
N 8 fez_swap true
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   72	
  
Exemplo	
  Animado	
  
42236 45 33 6714 98
1 2 3 4 5 6 7 8
to_do
index
5
3
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   73	
  
Exemplo	
  Animado	
  
42236 45 33 6714 98
1 2 3 4 5 6 7 8
to_do
index
5
3
N 8 fez_swap true
No Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   74	
  
Exemplo	
  Animado	
  
42236 45 33 6714 98
1 2 3 4 5 6 7 8
to_do
index
5
4
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   75	
  
Exemplo	
  Animado	
  
42236 45 33 6714 98
1 2 3 4 5 6 7 8
to_do
index
5
4
N 8 fez_swap true
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   76	
  
Exemplo	
  Animado	
  
42236 33 45 6714 98
1 2 3 4 5 6 7 8
to_do
index
5
4
N 8 fez_swap true
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   77	
  
Exemplo	
  Animado	
  
42236 33 45 6714 98
1 2 3 4 5 6 7 8
to_do
index
5
5
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   78	
  
Exemplo	
  Animado	
  
42236 33 45 6714 98
1 2 3 4 5 6 7 8
to_do
index
5
5
N 8 fez_swap true
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   79	
  
Exemplo	
  Animado	
  
45236 33 42 6714 98
1 2 3 4 5 6 7 8
to_do
index
5
5
N 8 fez_swap true
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   80	
  
Exemplo	
  Animado	
  
45236 33 42 6714 98
1 2 3 4 5 6 7 8
to_do
index
5
6
N 8 fez_swap true
Fim da Terceira Iteração
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   81	
  
Exemplo	
  Animado	
  
45236 33 42 6714 98
1 2 3 4 5 6 7 8
to_do
index
4
1
N 8 fez_swap false
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   82	
  
Exemplo	
  Animado	
  
45236 33 42 6714 98
1 2 3 4 5 6 7 8
to_do
index
4
1
N 8 fez_swap false
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   83	
  
Exemplo	
  Animado	
  
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
4
1
N 8 fez_swap true
Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   84	
  
Exemplo	
  Animado	
  
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
4
2
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   85	
  
Exemplo	
  Animado	
  
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
4
2
N 8 fez_swap true
No Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   86	
  
Exemplo	
  Animado	
  
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
4
3
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   87	
  
Exemplo	
  Animado	
  
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
4
3
N 8 fez_swap true
No Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   88	
  
Exemplo	
  Animado	
  
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
4
4
N 8 fez_swap true
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   89	
  
Exemplo	
  Animado	
  
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
4
4
N 8 fez_swap true
No Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   90	
  
Exemplo	
  Animado	
  
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
4
5
N 8 fez_swap true
Fim da Quarta Iteração
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   91	
  
Exemplo	
  Animado	
  
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
3
1
N 8 fez_swap false
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   92	
  
Exemplo	
  Animado	
  
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
3
1
N 8 fez_swap false
No Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   93	
  
Exemplo	
  Animado	
  
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
3
2
N 8 fez_swap false
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   94	
  
Exemplo	
  Animado	
  
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
3
2
N 8 fez_swap false
No Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   95	
  
Exemplo	
  Animado	
  
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
3
3
N 8 fez_swap false
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   96	
  
Exemplo	
  Animado	
  
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
3
3
N 8 fez_swap false
No Swap
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   97	
  
Exemplo	
  Animado	
  
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
3
4
N 8 fez_swap false
Fim da Quinta Iteração
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   98	
  
Exemplo	
  Animado	
  
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
3
4
N 8 fez_swap false
Não foi realizado nenhum swap
então, todos os elementos já
encontram-se nas posições
corretas.
Nós podemos “pular” os dois
últimos passos do loop externo.
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   99	
  
Observações	
  
•  O	
  algoritmo	
  é	
  estável,	
  isto	
  é,	
  os	
  registros	
  com	
  
chaves	
  iguais	
  nem	
  sempre	
  irão	
  manter	
  a	
  
mesma	
  posição	
  relaYva	
  de	
  antes	
  do	
  início	
  da	
  
ordenação	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   100	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   101	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   102	
  
Imagens	
  
•  hkp://www.caelum.com.br/imagens/curso/cs14-­‐imagem.jpg	
  	
  
•  hkp://www.showmesavings.com/images/target.gif	
  	
  
•  hkp://sandersconsulYng.com/Portals/58319/images/checklist.jpg	
  	
  
•  hkp://www.classichitspaulista.com.br/wp-­‐content/uploads/2010/12/correios-­‐triagem.jpg	
  	
  
•  hkp://www.blackboard.com/resources/connecYons/SEARCH-­‐1.jpg	
  	
  
•  hkp://staYc.howstuffworks.com/gif/how-­‐to-­‐plant-­‐trees-­‐shrubs-­‐and-­‐vines-­‐47.jpg	
  	
  
•  hkp://ffodissahnerak.files.wordpress.com/2007/11/grafo.gif	
  	
  
•  hkp://xpress.superpedido.com.br/Imagens/Capas200502/8536301236.jpg	
  	
  
•  hkp://imagem.buscape.com.br/capas/livros/205/031/190x190_8560031502.jpg	
  	
  
•  hkp://d.yimg.com/gg/u/7a62d58d03887ad0ea7e52fa078e0c0de7b19db6.jpeg	
  	
  
•  hkp://www.computertrainingpakaya.com/images/big-­‐Yck.jpg	
  	
  
•  hkp://dbestwebdeveloper.com/pinoy-­‐website-­‐developer/wp-­‐content/uploads/
2010/07/12282598707YbD6m.jpg	
  	
  
•  hkp://lake.k12.fl.us/moe/lib/moe/test.jpg	
  	
  
•  hkp://acccbuzz.files.wordpress.com/2010/12/grade.jpg	
  	
  
•  hkp://www.vshandw.com/images/icon.informaYon.gif	
  	
  
•  hkp://cs.bloomington.k12.mn.us/modules/groups/homepagefiles/cms/1597624/Image/Icons/
calendar+icon3.png	
  	
  
•  hkp://www.goldb.org/goldblog/cmg_images/real_programmers_binary.jpg	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   103	
  
Obrigado	
  
	
  
Daniel	
  Arndt	
  Alves	
  
daniel.alves@mackenzie.br	
  
Daniel	
  Arndt	
  Alves	
   Bubble	
  Sort	
   104	
  

Mais conteúdo relacionado

PPT
Técnica de busca - Bubble Sort
PPTX
YZM 2116 - Bölüm 3 - Listeler
PPTX
Yzm 2116 Bölüm 7 - Tree ve Binary tree - İkili Ağaç
PDF
Insertion Sort
PPTX
Yzm 2116 Bölüm 10 - Hash Table
PPTX
Yzm 2116 Bölüm 11 - Graph - Çizge
PDF
Selection Sort
PPTX
Different Sorting tecniques in Data Structure
Técnica de busca - Bubble Sort
YZM 2116 - Bölüm 3 - Listeler
Yzm 2116 Bölüm 7 - Tree ve Binary tree - İkili Ağaç
Insertion Sort
Yzm 2116 Bölüm 10 - Hash Table
Yzm 2116 Bölüm 11 - Graph - Çizge
Selection Sort
Different Sorting tecniques in Data Structure

Mais procurados (20)

PDF
Pengurutan (Sorting)
DOC
Complexidade de algoritmos insertion, selection e bubble sort.
PPTX
PDF
Estrutura de Dados - Aula 06 - Pilhas Estáticas
PPTX
Sorting Algorithm
PPTX
Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)
PDF
Trabalho de algoritmos
PPTX
Analysis of Algorithm (Bubblesort and Quicksort)
ODP
Gnome sort
PPTX
Quick sort
PPTX
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
PPTX
Yzm 2116 - Bölüm 5 (Queue, Kuyruk, Basit, Dairesel, Öncelikli)
PDF
Metodos de ordenação estrutura de dados
PDF
Estrutura de Dados - Listas Encadeadas
PPTX
코딩 테스트 합격자 되기 C++ 09장 트리에 대한 강의 자료 입니다.
PPTX
STACKS AND QUEUES.pptx
PDF
Análise de desempenho de algoritmos de ordenação
PDF
Estrutura de Dados - Aula 12 - Listas Duplamente Encadeadas
PDF
Лекция 6: Словари. Хеш-таблицы
PPT
Materi Struktur Data Tree
Pengurutan (Sorting)
Complexidade de algoritmos insertion, selection e bubble sort.
Estrutura de Dados - Aula 06 - Pilhas Estáticas
Sorting Algorithm
Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)
Trabalho de algoritmos
Analysis of Algorithm (Bubblesort and Quicksort)
Gnome sort
Quick sort
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Yzm 2116 - Bölüm 5 (Queue, Kuyruk, Basit, Dairesel, Öncelikli)
Metodos de ordenação estrutura de dados
Estrutura de Dados - Listas Encadeadas
코딩 테스트 합격자 되기 C++ 09장 트리에 대한 강의 자료 입니다.
STACKS AND QUEUES.pptx
Análise de desempenho de algoritmos de ordenação
Estrutura de Dados - Aula 12 - Listas Duplamente Encadeadas
Лекция 6: Словари. Хеш-таблицы
Materi Struktur Data Tree
Anúncio

Destaque (20)

PDF
métodos ordenação C, bolha, selection sort e insertion sort
PDF
Bubble Sort Classe Java
PDF
ordenacao shellsort quicksort em C
PDF
Algoritmo Shell Sort
PPTX
Shell sort
PPTX
Método de ordenamiento quicksort
PPT
Shell sort
PDF
PDF
Java Platform, Enterprise Edition
PDF
PDF
Hiearquia Window
PDF
Histórico de Participação do Mackenzie na Maratona de Programação
PPSX
Algoritmos de busca
PPT
Shell sort[1]
PDF
Java Swing
PPTX
Gerenciadores de Layout
PDF
Análise de Algoritmos
PDF
Ordenação
métodos ordenação C, bolha, selection sort e insertion sort
Bubble Sort Classe Java
ordenacao shellsort quicksort em C
Algoritmo Shell Sort
Shell sort
Método de ordenamiento quicksort
Shell sort
Java Platform, Enterprise Edition
Hiearquia Window
Histórico de Participação do Mackenzie na Maratona de Programação
Algoritmos de busca
Shell sort[1]
Java Swing
Gerenciadores de Layout
Análise de Algoritmos
Ordenação
Anúncio

Mais de Daniel Arndt Alves (19)

PDF
Variaveis Superglobais
PDF
Programacao Modular
PDF
Strings, Arrays e Manipulação Datas em PHP
PDF
Introducao ao PHP
PDF
Arquitetura web
PDF
HTML Básico
PDF
Polimorfismo
PDF
Conceitos Básicos de Objetos Distribuidos
PDF
Exercicios - Java Swing Listeners
PDF
Exercicios - Java Swing
PDF
Estrutura de Dados II - Plano de Ensino
PDF
Estrutura de Dados II - Apresentação da Disciplina
PDF
Técnicas de Programação Aplicada III - Apresentação da Disciplina
PDF
Técnicas de Programação Aplicada III - Plano de Ensino
PDF
Linguagem de Programação II - Plano de Ensino
PDF
Linguagem de Programação II - Apresentação da Disciplina
PDF
Novos Recursos do Moodle 2
DOC
Novos Recursos do Moodle 2.0 (Paper)
PPTX
Modelos de Integração Moodle - Sistemas de Gestão Acadêmicos e Administrativos
Variaveis Superglobais
Programacao Modular
Strings, Arrays e Manipulação Datas em PHP
Introducao ao PHP
Arquitetura web
HTML Básico
Polimorfismo
Conceitos Básicos de Objetos Distribuidos
Exercicios - Java Swing Listeners
Exercicios - Java Swing
Estrutura de Dados II - Plano de Ensino
Estrutura de Dados II - Apresentação da Disciplina
Técnicas de Programação Aplicada III - Apresentação da Disciplina
Técnicas de Programação Aplicada III - Plano de Ensino
Linguagem de Programação II - Plano de Ensino
Linguagem de Programação II - Apresentação da Disciplina
Novos Recursos do Moodle 2
Novos Recursos do Moodle 2.0 (Paper)
Modelos de Integração Moodle - Sistemas de Gestão Acadêmicos e Administrativos

Último (20)

PPTX
SEGURANÇA, MEIO AMBIENTE E SAÚDE Aula 1.pptx
PDF
HORÁRIO GERAL SIGAA 2025_PRÉVIA_SIGAA-1.pdf
PPTX
125519 - Aula 2 - Riqueza e diversidade povos indígenas na América Portuguesa...
PDF
EXPRESSÕES IDIOMÁTICAS - LÍNGUA PORTUGUESA
PDF
Urbanização no Brasil LEVANDO EM CONTA CONCEITOS
PPT
AS VANGUARDAS EUROPEIAS NA LITERATURA E N
PPTX
Adaptação Curricular para Alunos com Deficiências - EMEB. ODIR (1).pptx
PPTX
2. A Cultura do Salão - o fim das trevas.pptx
PDF
Historia-da-Psicologia-Rumos-e-percursos.pdf
PDF
Reino Monera - Biologiaensinomediofun.pdf
PPT
YY2015MM3DD6HH12MM42SS3-Organiza__o do Estado ILP.ppt
PPTX
matriaesuastransformaes-1ano-230402203238-f3b10049.pptx
PPT
1ª Telefonia Fixa Padrao Novo Jailton 2012_22.ppt
PPSX
1. A Cultura da Ágora - HistóriaCArtes.ppsx
PPTX
São João Eudes, 1601 – 1680, padre e fondador, Francés.pptx
PDF
Caderno do Futuro 1º Ano CIÊNCIAS Aluno.pdf
PPTX
1. A Cultura do Palco - muitos palcos, um espetáculo.pptx
PDF
edital-de-chamamento-publico-no-3-2025.pdf
PPTX
entorseestadodechoque. Aula de primeiros socorros
PDF
ENTREVISTA-PROCESSO-SELETIVO-idc8j5.pdf 1
SEGURANÇA, MEIO AMBIENTE E SAÚDE Aula 1.pptx
HORÁRIO GERAL SIGAA 2025_PRÉVIA_SIGAA-1.pdf
125519 - Aula 2 - Riqueza e diversidade povos indígenas na América Portuguesa...
EXPRESSÕES IDIOMÁTICAS - LÍNGUA PORTUGUESA
Urbanização no Brasil LEVANDO EM CONTA CONCEITOS
AS VANGUARDAS EUROPEIAS NA LITERATURA E N
Adaptação Curricular para Alunos com Deficiências - EMEB. ODIR (1).pptx
2. A Cultura do Salão - o fim das trevas.pptx
Historia-da-Psicologia-Rumos-e-percursos.pdf
Reino Monera - Biologiaensinomediofun.pdf
YY2015MM3DD6HH12MM42SS3-Organiza__o do Estado ILP.ppt
matriaesuastransformaes-1ano-230402203238-f3b10049.pptx
1ª Telefonia Fixa Padrao Novo Jailton 2012_22.ppt
1. A Cultura da Ágora - HistóriaCArtes.ppsx
São João Eudes, 1601 – 1680, padre e fondador, Francés.pptx
Caderno do Futuro 1º Ano CIÊNCIAS Aluno.pdf
1. A Cultura do Palco - muitos palcos, um espetáculo.pptx
edital-de-chamamento-publico-no-3-2025.pdf
entorseestadodechoque. Aula de primeiros socorros
ENTREVISTA-PROCESSO-SELETIVO-idc8j5.pdf 1

Bubble Sort

  • 1. Universidade Presbiteriana Mackenzie   Aula  3:  Bubble  Sort   Prof. Ms. Daniel Arndt Alves Faculdade  de  Computação  e  Informá;ca   Computação e Informática Faculdade de Estrutura  de   Dados  II   Daniel  Arndt  Alves   Bubble  Sort   1  
  • 2. Tópicos  da  Aula   •  Ordenação  de  Vetores   •  Algoritmos  de  Ordenação   •  Bubble  Sort   •  Complexidade  Computacional   •  Exemplo  Animado   •  Observações   Daniel  Arndt  Alves   Bubble  Sort   2  
  • 3. Ordenação de Vetores •  Por vezes é necessário ordenar um vetor de forma crescente ou decrescente. •  Por vezes é necessário que as strings contidas num vetor estejam ordenadas alfabeticamente. •  Algoritmos de ordenação são fáceis de adaptar de forma a ordenar qualquer que seja a ordem que se pretende. Daniel  Arndt  Alves   Bubble  Sort   3  
  • 4. Algoritmos  de  Ordenação   •  Ordenação  =  Sort   •  Rearranjar  os  elementos  de   um  array  (banco  de  dados)  de  modo  a  que   obedeçam  a  um  certo  critério  de  ordem.   – Ordem  numérica   – Ordem  lexicográfica   Daniel  Arndt  Alves   Bubble  Sort   4  
  • 5. Algoritmos  de  Ordenação   Daniel  Arndt  Alves   Bubble  Sort   5   512354277 101 1 2 3 4 5 6 5 12 35 42 77 101 1 2 3 4 5 6
  • 6. Algoritmos  de  Ordenação   •  Metodologias:  troca,  inserção,   seleção,  intercalação,   distribuição  de  chaves   – Chave:  componente  de  uma   estrutura,  ou  de  um  registro  de  banco  de  dados,   segundo  o  qual  se  realiza  a  ordenação.   Daniel  Arndt  Alves   Bubble  Sort   6  
  • 7. Bubble  Sort   •  Percorrer  a  coleção  e  elementos   – Movimentação  do  início  ao  fim  do  vetor   – “Bubble” o  maior  valor  ao  final  do  vetor   uYlizando  pares  de  comparações  e  trocas   Daniel  Arndt  Alves   Bubble  Sort   7   512354277 101 1 2 3 4 5 6
  • 8. Bubble  Sort   •  Percorrer  a  coleção  e  elementos   – Movimentação  do  início  ao  fim  do  vetor   – “Bubble” o  maior  valor  ao  final  do  vetor   uYlizando  pares  de  comparações  e  trocas   Daniel  Arndt  Alves   Bubble  Sort   8   512354277 101 1 2 3 4 5 6 Swap42 77
  • 9. Bubble  Sort   •  Percorrer  a  coleção  e  elementos   – Movimentação  do  início  ao  fim  do  vetor   – “Bubble” o  maior  valor  ao  final  do  vetor   uYlizando  pares  de  comparações  e  trocas   Daniel  Arndt  Alves   Bubble  Sort   9   512357742 101 1 2 3 4 5 6 Swap35 77
  • 10. Bubble  Sort   •  Percorrer  a  coleção  e  elementos   – Movimentação  do  início  ao  fim  do  vetor   – “Bubble” o  maior  valor  ao  final  do  vetor   uYlizando  pares  de  comparações  e  trocas   Daniel  Arndt  Alves   Bubble  Sort   10   512773542 101 1 2 3 4 5 6 Swap12 77
  • 11. Bubble  Sort   •  Percorrer  a  coleção  e  elementos   – Movimentação  do  início  ao  fim  do  vetor   – “Bubble” o  maior  valor  ao  final  do  vetor   uYlizando  pares  de  comparações  e  trocas   Daniel  Arndt  Alves   Bubble  Sort   11   577123542 101 1 2 3 4 5 6 Não há necessidade de swap
  • 12. Bubble  Sort   •  Percorrer  a  coleção  e  elementos   – Movimentação  do  início  ao  fim  do  vetor   – “Bubble” o  maior  valor  ao  final  do  vetor   uYlizando  pares  de  comparações  e  trocas   Daniel  Arndt  Alves   Bubble  Sort   12   577123542 101 1 2 3 4 5 6 Swap5 101
  • 13. Bubble  Sort   •  Percorrer  a  coleção  e  elementos   – Movimentação  do  início  ao  fim  do  vetor   – “Bubble” o  maior  valor  ao  final  do  vetor   uYlizando  pares  de  comparações  e  trocas   Daniel  Arndt  Alves   Bubble  Sort   13   77123542 5 1 2 3 4 5 6 101 Maior valor posicionado corretamente
  • 14. Bubble  Sort   •  Note  que  somente  o  elemento  de  maior  valor   está  posicionado  corretamente   •  Todos  os  demais  valores  conYnuam  fora  de   ordem   •  Então,  precisamos  repeYr  este  processo   Daniel  Arndt  Alves   Bubble  Sort   14   77123542 5 1 2 3 4 5 6 101 Maior valor posicionado corretamente
  • 15. Bubble  Sort   •  RepeYr  quantas  vezes?   – Se  temos  N  elementos…   – Se,  a  cada  iteração,  nós  posicionamos  um   elemento  corretamente…   – Então  nós  repeYmos  o  processo  N  –  1  vezes.   – Desta  forma,  garanYmos  o  correto   posicionamento  dos  N  elementos.   Daniel  Arndt  Alves   Bubble  Sort   15  
  • 16. Bubble  Sort   Daniel  Arndt  Alves   Bubble  Sort   16   77123542 5 1 2 3 4 5 6 101 5421235 77 1 2 3 4 5 6 101 4253512 77 1 2 3 4 5 6 101 4235512 77 1 2 3 4 5 6 101 4235125 77 1 2 3 4 5 6 101 N-1
  • 17. Bubble  Sort   Daniel  Arndt  Alves   Bubble  Sort   17   12354277 101 1 2 3 4 5 6 5 77123542 5 1 2 3 4 5 6 101 5421235 77 1 2 3 4 5 6 101 4253512 77 1 2 3 4 5 6 101 4235512 77 1 2 3 4 5 6 101
  • 18. Bubble  Sort   •  Na  Nésima  iteração, precisamos apenas de   MAX-­‐N  comparações.   •  Por  exemplo:   – Esa  é  a  4a  iteração   – MAX  é  6   – Precisamos  apenas  de  2  comparações   Daniel  Arndt  Alves   Bubble  Sort   18   4253512 77 1 2 3 4 5 6 101
  • 19. Bubble  Sort   public class Sort { public void bubbleSort(int[] v, int n){ int j, k, limit; limit = n-1 while (true){ k = 0; for (j = 0; j <= limit - 1; j++){ if (v[j] > v[j+1]){ swap(v, j, j+1); k = j; } } if (k == 0) break; limit = k; } } } Daniel  Arndt  Alves   Bubble  Sort   19  
  • 20. O  Método  swap   /** * Troca a posição de dois elementos de um array de inteiros * @param v um int array * @param i índice do elemento a ser trocado * @param j índice do elemento a ser trocado */ public void swap(int[] v, int i, int j){ int temp; temp = v[i]; v[i] = v[j]; v[j] = temp; } Daniel  Arndt  Alves   Bubble  Sort   20  
  • 21. Sobrecarga   public void bubbleSort(int[] v){ bubbleSort(v, v.length); } Daniel  Arndt  Alves   Bubble  Sort   21  
  • 22. Invocando  o  método  bubbleSort public static void main(String[] args){ Sort sort = new Sort(); int[] v; v = new int[50]; ... sort.bubbleSort(v); ... int n = umValor; sort.bubbleSort(v, n); }   Daniel  Arndt  Alves   Bubble  Sort   22  
  • 23. Complexidade  Computacional   •  Complexidade  no  tempo:  comportamento  do   algoritmo  no  tempo,  em  função  do  tamanho   da  entrada.   •  Complexidade  no  espaço:  consumo  de   memória  do  algoritmo,  em  função  do   tamanho  da  entrada.   Daniel  Arndt  Alves   Bubble  Sort   23  
  • 24. Complexidade  Computacional   •  Bubble  Sort:  o  tempo  gasto  na  execução  do   algoritmo  varia  em  ordem  quadráYca  em   relação  ao  número  de  elementos  a  serem   ordenados.   – T  =  O(n2)  –  Notação  “Big  O”   – AYvidades  mais  custosas:   •  Comparações   •  Trocas  de  Posição  (swap)   Daniel  Arndt  Alves   Bubble  Sort   24  
  • 25. Complexidade  Computacional   •  Análise  informal  com  base  na  operação  mais   custosa,  que  é  a  comparação   – n  etapas  no  pior  caso   – Na  primeira  etapa,  são  feitas  n-­‐1  comparações  e   trocas,  na  segunda  n-­‐2  e  assim  por  diante.   – Temos  então,  a  soma  dos  termos  de  uma   progressão  aritméYca:   •  (n-­‐1)  +  (n-­‐2)  +  …  +  1   •      Daniel  Arndt  Alves   Bubble  Sort   25   Total = n⋅ n −1( ) 2 ⇒ O n2 ( )
  • 26. Complexidade  Computacional   •  Melhor  caso:  vetor  ordenado   •  Pior  caso:  vetor  inverYdo   Daniel  Arndt  Alves   Bubble  Sort   26  
  • 27. Exemplo  Animado   674523 14 6 3398 42 1 2 3 4 5 6 7 8 to_do index 7 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   27  
  • 28. Exemplo  Animado   674523 14 6 3398 42 1 2 3 4 5 6 7 8 to_do index 7 1 N 8 fez_swap false Daniel  Arndt  Alves   Bubble  Sort   28  
  • 29. Exemplo  Animado   674523 14 6 3398 42 1 2 3 4 5 6 7 8 to_do index 7 1 N 8 Swap fez_swap false Daniel  Arndt  Alves   Bubble  Sort   29  
  • 30. Exemplo  Animado   674598 14 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 1 N 8 Swap fez_swap true Daniel  Arndt  Alves   Bubble  Sort   30  
  • 31. Exemplo  Animado   674598 14 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 2 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   31  
  • 32. Exemplo  Animado   674598 14 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 2 N 8 Swap fez_swap true Daniel  Arndt  Alves   Bubble  Sort   32  
  • 33. Exemplo  Animado   679845 14 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 2 N 8 Swap fez_swap true Daniel  Arndt  Alves   Bubble  Sort   33  
  • 34. Exemplo  Animado   679845 14 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 3 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   34  
  • 35. Exemplo  Animado   679845 14 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 3 N 8 Swap fez_swap true Daniel  Arndt  Alves   Bubble  Sort   35  
  • 36. Exemplo  Animado   671445 98 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 3 N 8 Swap fez_swap true Daniel  Arndt  Alves   Bubble  Sort   36  
  • 37. Exemplo  Animado   671445 98 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 4 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   37  
  • 38. Exemplo  Animado   671445 98 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 4 N 8 Swap fez_swap true Daniel  Arndt  Alves   Bubble  Sort   38  
  • 39. Exemplo  Animado   671445 6 98 3323 42 1 2 3 4 5 6 7 8 to_do index 7 4 N 8 Swap fez_swap true Daniel  Arndt  Alves   Bubble  Sort   39  
  • 40. Exemplo  Animado   671445 6 98 3323 42 1 2 3 4 5 6 7 8 to_do index 7 5 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   40  
  • 41. Exemplo  Animado   671445 6 98 3323 42 1 2 3 4 5 6 7 8 to_do index 7 5 N 8 Swap fez_swap true Daniel  Arndt  Alves   Bubble  Sort   41  
  • 42. Exemplo  Animado   981445 6 67 3323 42 1 2 3 4 5 6 7 8 to_do index 7 5 N 8 Swap fez_swap true Daniel  Arndt  Alves   Bubble  Sort   42  
  • 43. Exemplo  Animado   981445 6 67 3323 42 1 2 3 4 5 6 7 8 to_do index 7 6 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   43  
  • 44. Exemplo  Animado   981445 6 67 3323 42 1 2 3 4 5 6 7 8 to_do index 7 6 N 8 Swap fez_swap true Daniel  Arndt  Alves   Bubble  Sort   44  
  • 45. Exemplo  Animado   331445 6 67 9823 42 1 2 3 4 5 6 7 8 to_do index 7 6 N 8 Swap fez_swap true Daniel  Arndt  Alves   Bubble  Sort   45  
  • 46. Exemplo  Animado   331445 6 67 9823 42 1 2 3 4 5 6 7 8 to_do index 7 7 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   46  
  • 47. Exemplo  Animado   331445 6 67 9823 42 1 2 3 4 5 6 7 8 to_do index 7 7 N 8 Swap fez_swap true Daniel  Arndt  Alves   Bubble  Sort   47  
  • 48. Exemplo  Animado   331445 6 67 4223 98 1 2 3 4 5 6 7 8 to_do index 7 7 N 8 Swap fez_swap true Daniel  Arndt  Alves   Bubble  Sort   48  
  • 49. Exemplo  Animado   331445 6 67 4223 98 1 2 3 4 5 6 7 8 to_do index 7 8 N 8 Fim da Primeira Iteração did_swap true Daniel  Arndt  Alves   Bubble  Sort   49  
  • 50. Exemplo  Animado   331445 6 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 1 N 8 fez_swap false Daniel  Arndt  Alves   Bubble  Sort   50  
  • 51. Exemplo  Animado   331445 6 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 1 N 8 fez_swap false No Swap Daniel  Arndt  Alves   Bubble  Sort   51  
  • 52. Exemplo  Animado   331445 6 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 2 N 8 fez_swap false Daniel  Arndt  Alves   Bubble  Sort   52  
  • 53. Exemplo  Animado   331445 6 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 2 N 8 fez_swap false Swap Daniel  Arndt  Alves   Bubble  Sort   53  
  • 54. Exemplo  Animado   334514 6 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 2 N 8 fez_swap true Swap Daniel  Arndt  Alves   Bubble  Sort   54  
  • 55. Exemplo  Animado   334514 6 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 3 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   55  
  • 56. Exemplo  Animado   334514 6 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 3 N 8 fez_swap true Swap Daniel  Arndt  Alves   Bubble  Sort   56  
  • 57. Exemplo  Animado   33614 45 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 3 N 8 fez_swap true Swap Daniel  Arndt  Alves   Bubble  Sort   57  
  • 58. Exemplo  Animado   33614 45 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 4 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   58  
  • 59. Exemplo  Animado   33614 45 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 4 N 8 fez_swap true No Swap Daniel  Arndt  Alves   Bubble  Sort   59  
  • 60. Exemplo  Animado   33614 45 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 5 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   60  
  • 61. Exemplo  Animado   33614 45 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 5 N 8 fez_swap true Swap Daniel  Arndt  Alves   Bubble  Sort   61  
  • 62. Exemplo  Animado   67614 45 33 4223 98 1 2 3 4 5 6 7 8 to_do index 6 5 N 8 fez_swap true Swap Daniel  Arndt  Alves   Bubble  Sort   62  
  • 63. Exemplo  Animado   67614 45 33 4223 98 1 2 3 4 5 6 7 8 to_do index 6 6 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   63  
  • 64. Exemplo  Animado   67614 45 33 4223 98 1 2 3 4 5 6 7 8 to_do index 6 6 N 8 fez_swap true Swap Daniel  Arndt  Alves   Bubble  Sort   64  
  • 65. Exemplo  Animado   42614 45 33 6723 98 1 2 3 4 5 6 7 8 to_do index 6 6 N 8 fez_swap true Swap Daniel  Arndt  Alves   Bubble  Sort   65  
  • 66. Exemplo  Animado   42614 45 33 6723 98 1 2 3 4 5 6 7 8 to_do index 6 7 N 8 fez_swap true Fim da Segunda Iteração Daniel  Arndt  Alves   Bubble  Sort   66  
  • 67. Exemplo  Animado   42614 45 33 6723 98 1 2 3 4 5 6 7 8 to_do index 5 1 N 8 fez_swap false Daniel  Arndt  Alves   Bubble  Sort   67  
  • 68. Exemplo  Animado   42614 45 33 6723 98 1 2 3 4 5 6 7 8 to_do index 5 1 N 8 fez_swap false Swap Daniel  Arndt  Alves   Bubble  Sort   68  
  • 69. Exemplo  Animado   42623 45 33 6714 98 1 2 3 4 5 6 7 8 to_do index 5 1 N 8 fez_swap true Swap Daniel  Arndt  Alves   Bubble  Sort   69  
  • 70. Exemplo  Animado   42623 45 33 6714 98 1 2 3 4 5 6 7 8 to_do index 5 2 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   70  
  • 71. Exemplo  Animado   42623 45 33 6714 98 1 2 3 4 5 6 7 8 to_do index 5 2 N 8 fez_swap true Swap Daniel  Arndt  Alves   Bubble  Sort   71  
  • 72. Exemplo  Animado   42236 45 33 6714 98 1 2 3 4 5 6 7 8 to_do index 5 2 N 8 fez_swap true Swap Daniel  Arndt  Alves   Bubble  Sort   72  
  • 73. Exemplo  Animado   42236 45 33 6714 98 1 2 3 4 5 6 7 8 to_do index 5 3 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   73  
  • 74. Exemplo  Animado   42236 45 33 6714 98 1 2 3 4 5 6 7 8 to_do index 5 3 N 8 fez_swap true No Swap Daniel  Arndt  Alves   Bubble  Sort   74  
  • 75. Exemplo  Animado   42236 45 33 6714 98 1 2 3 4 5 6 7 8 to_do index 5 4 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   75  
  • 76. Exemplo  Animado   42236 45 33 6714 98 1 2 3 4 5 6 7 8 to_do index 5 4 N 8 fez_swap true Swap Daniel  Arndt  Alves   Bubble  Sort   76  
  • 77. Exemplo  Animado   42236 33 45 6714 98 1 2 3 4 5 6 7 8 to_do index 5 4 N 8 fez_swap true Swap Daniel  Arndt  Alves   Bubble  Sort   77  
  • 78. Exemplo  Animado   42236 33 45 6714 98 1 2 3 4 5 6 7 8 to_do index 5 5 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   78  
  • 79. Exemplo  Animado   42236 33 45 6714 98 1 2 3 4 5 6 7 8 to_do index 5 5 N 8 fez_swap true Swap Daniel  Arndt  Alves   Bubble  Sort   79  
  • 80. Exemplo  Animado   45236 33 42 6714 98 1 2 3 4 5 6 7 8 to_do index 5 5 N 8 fez_swap true Swap Daniel  Arndt  Alves   Bubble  Sort   80  
  • 81. Exemplo  Animado   45236 33 42 6714 98 1 2 3 4 5 6 7 8 to_do index 5 6 N 8 fez_swap true Fim da Terceira Iteração Daniel  Arndt  Alves   Bubble  Sort   81  
  • 82. Exemplo  Animado   45236 33 42 6714 98 1 2 3 4 5 6 7 8 to_do index 4 1 N 8 fez_swap false Daniel  Arndt  Alves   Bubble  Sort   82  
  • 83. Exemplo  Animado   45236 33 42 6714 98 1 2 3 4 5 6 7 8 to_do index 4 1 N 8 fez_swap false Swap Daniel  Arndt  Alves   Bubble  Sort   83  
  • 84. Exemplo  Animado   452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 4 1 N 8 fez_swap true Swap Daniel  Arndt  Alves   Bubble  Sort   84  
  • 85. Exemplo  Animado   452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 4 2 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   85  
  • 86. Exemplo  Animado   452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 4 2 N 8 fez_swap true No Swap Daniel  Arndt  Alves   Bubble  Sort   86  
  • 87. Exemplo  Animado   452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 4 3 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   87  
  • 88. Exemplo  Animado   452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 4 3 N 8 fez_swap true No Swap Daniel  Arndt  Alves   Bubble  Sort   88  
  • 89. Exemplo  Animado   452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 4 4 N 8 fez_swap true Daniel  Arndt  Alves   Bubble  Sort   89  
  • 90. Exemplo  Animado   452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 4 4 N 8 fez_swap true No Swap Daniel  Arndt  Alves   Bubble  Sort   90  
  • 91. Exemplo  Animado   452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 4 5 N 8 fez_swap true Fim da Quarta Iteração Daniel  Arndt  Alves   Bubble  Sort   91  
  • 92. Exemplo  Animado   452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 3 1 N 8 fez_swap false Daniel  Arndt  Alves   Bubble  Sort   92  
  • 93. Exemplo  Animado   452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 3 1 N 8 fez_swap false No Swap Daniel  Arndt  Alves   Bubble  Sort   93  
  • 94. Exemplo  Animado   452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 3 2 N 8 fez_swap false Daniel  Arndt  Alves   Bubble  Sort   94  
  • 95. Exemplo  Animado   452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 3 2 N 8 fez_swap false No Swap Daniel  Arndt  Alves   Bubble  Sort   95  
  • 96. Exemplo  Animado   452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 3 3 N 8 fez_swap false Daniel  Arndt  Alves   Bubble  Sort   96  
  • 97. Exemplo  Animado   452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 3 3 N 8 fez_swap false No Swap Daniel  Arndt  Alves   Bubble  Sort   97  
  • 98. Exemplo  Animado   452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 3 4 N 8 fez_swap false Fim da Quinta Iteração Daniel  Arndt  Alves   Bubble  Sort   98  
  • 99. Exemplo  Animado   452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 3 4 N 8 fez_swap false Não foi realizado nenhum swap então, todos os elementos já encontram-se nas posições corretas. Nós podemos “pular” os dois últimos passos do loop externo. Daniel  Arndt  Alves   Bubble  Sort   99  
  • 100. Observações   •  O  algoritmo  é  estável,  isto  é,  os  registros  com   chaves  iguais  nem  sempre  irão  manter  a   mesma  posição  relaYva  de  antes  do  início  da   ordenação   Daniel  Arndt  Alves   Bubble  Sort   100  
  • 101. Daniel  Arndt  Alves   Bubble  Sort   101  
  • 102. Daniel  Arndt  Alves   Bubble  Sort   102  
  • 103. Imagens   •  hkp://www.caelum.com.br/imagens/curso/cs14-­‐imagem.jpg     •  hkp://www.showmesavings.com/images/target.gif     •  hkp://sandersconsulYng.com/Portals/58319/images/checklist.jpg     •  hkp://www.classichitspaulista.com.br/wp-­‐content/uploads/2010/12/correios-­‐triagem.jpg     •  hkp://www.blackboard.com/resources/connecYons/SEARCH-­‐1.jpg     •  hkp://staYc.howstuffworks.com/gif/how-­‐to-­‐plant-­‐trees-­‐shrubs-­‐and-­‐vines-­‐47.jpg     •  hkp://ffodissahnerak.files.wordpress.com/2007/11/grafo.gif     •  hkp://xpress.superpedido.com.br/Imagens/Capas200502/8536301236.jpg     •  hkp://imagem.buscape.com.br/capas/livros/205/031/190x190_8560031502.jpg     •  hkp://d.yimg.com/gg/u/7a62d58d03887ad0ea7e52fa078e0c0de7b19db6.jpeg     •  hkp://www.computertrainingpakaya.com/images/big-­‐Yck.jpg     •  hkp://dbestwebdeveloper.com/pinoy-­‐website-­‐developer/wp-­‐content/uploads/ 2010/07/12282598707YbD6m.jpg     •  hkp://lake.k12.fl.us/moe/lib/moe/test.jpg     •  hkp://acccbuzz.files.wordpress.com/2010/12/grade.jpg     •  hkp://www.vshandw.com/images/icon.informaYon.gif     •  hkp://cs.bloomington.k12.mn.us/modules/groups/homepagefiles/cms/1597624/Image/Icons/ calendar+icon3.png     •  hkp://www.goldb.org/goldblog/cmg_images/real_programmers_binary.jpg   Daniel  Arndt  Alves   Bubble  Sort   103  
  • 104. Obrigado     Daniel  Arndt  Alves   daniel.alves@mackenzie.br   Daniel  Arndt  Alves   Bubble  Sort   104