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	
  

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   publicclass 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 voidbubbleSort(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   67452314 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   67452314 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   67452314 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   67459814 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   67459814 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   67459814 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   67984514 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   67984514 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   67984514 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   67144598 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   67144598 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   67144598 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   6714456 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   6714456 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   6714456 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   9814456 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   9814456 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   9814456 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   3314456 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   3314456 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   3314456 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   3314456 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   3314456 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   3314456 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   3314456 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   3314456 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   3314456 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   3345146 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   3345146 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   3345146 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   3361445 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   3361445 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   3361445 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   3361445 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   3361445 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   6761445 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   6761445 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   6761445 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   4261445 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   4261445 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   4261445 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   4261445 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   4262345 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   4262345 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   4262345 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   4223645 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   4223645 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   4223645 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   4223645 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   4223645 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   4223633 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   4223633 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   4223633 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   4523633 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   4523633 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   4523633 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   4523633 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   45231433 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   45231433 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   45231433 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   45231433 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   45231433 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   45231433 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   45231433 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   45231433 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   45231433 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   45231433 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   45231433 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   45231433 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   45231433 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   45231433 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   45231433 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   45231433 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