Universidade Presbiteriana Mackenzie	
  
Aula	
  4:	
  Selec+on	
  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	
   Selec0on	
  Sort	
   1	
  
Tópicos	
  da	
  Aula	
  
•  Selec%on	
  Sort	
  
•  Complexidade	
  Computacional	
  
•  Desvantagens	
  
Daniel	
  Arndt	
  Alves	
   Selec0on	
  Sort	
   2	
  
•  Um	
  dos	
  algoritmos	
  mais	
  simples	
  
•  Mais	
  recomendado	
  para	
  conjuntos	
  pequenos	
  
•  Procedimento:	
  
– Selecione	
  o	
  menor	
  item	
  do	
  conjunto	
  e	
  troque-­‐o	
  
com	
  o	
  item	
  que	
  está	
  na	
  posição	
  i	
  
– Repita	
  essas	
  operações	
  com	
  os	
  demais	
  itens	
  até	
  
que	
  reste	
  apenas	
  um	
  elemento	
  
Selection Sort
Daniel	
  Arndt	
  Alves	
   Selec0on	
  Sort	
   3	
  
Selection Sort
•  O algoritmo de ordenação selection sort
permite ordenar os valores num vetor, por
exemplo:
a[0] <= a[1] <= a[2] … <= a[a.length-1]
•  O algoritmo selection sort coloca o menor
item em a[0], o seguinte menor item em
a[1], e assim sucessivamente até ao último
item.
for(i = 0; i <a.length-1; i++)
coloca o io item menor em a[i]
Daniel	
  Arndt	
  Alves	
   Selec0on	
  Sort	
   4	
  
Selection Sort
•  Selection sort começa por procurar o menor
item do array e troca-o com o item a[0].
•  Selection sort continua procurando o próximo
menor item e troca-o com as sucessivos itens
do array a.
•  Selection sort termina quando já só existe um
item.
Daniel	
  Arndt	
  Alves	
   Selec0on	
  Sort	
   5	
  
Selec%on	
  Sort	
  
•  Na	
  primeira	
  etapa	
  seleciona-­‐se	
  o	
  maior	
  valor	
  
entre	
  N	
  elementos	
  e	
  move-­‐se	
  para	
  a	
  “área	
  de	
  
saída”	
  
•  Na	
  segunda	
  etapa	
  seleciona-­‐se	
  o	
  maior	
  valor	
  
entre	
  N-­‐1	
  elementos	
  e	
  move-­‐se	
  para	
  a	
  “área	
  
de	
  saída”	
  
•  Repete-­‐se	
  o	
  processo	
  até	
  que	
  N	
  registros	
  
tenham	
  sido	
  selecionados	
  
Daniel	
  Arndt	
  Alves	
   Selec0on	
  Sort	
   6	
  
Selec%on	
  Sort	
  
O	
   R	
   D	
   E	
   N	
   A	
  
1	
   2	
   3	
   4	
   5	
   6	
  
Chaves	
  Iniciais:	
  
i=1:	
   A	
   R	
   D	
   E	
   N	
   O	
  
A	
   D	
   R	
   E	
   N	
   O	
  
A	
   D	
   E	
   R	
   N	
   O	
  
A	
   D	
   E	
   N	
   R	
   O	
  
A	
   D	
   E	
   N	
   O	
   R	
  
i=2:	
  
i=3:	
  
i=4:	
  
i=5:	
  
Daniel	
  Arndt	
  Alves	
   Selec0on	
  Sort	
   7	
  
Selection Sort
Daniel	
  Arndt	
  Alves	
   Selec0on	
  Sort	
   8	
  
Selec%on	
  Sort	
  
Daniel	
  Arndt	
  Alves	
   Selec0on	
  Sort	
   9	
  
Selec%on	
  Sort	
  
public void straightSelectionSort(int[] v, int n){
int j, i, maior;
for(j = n-1; j >= 1; j--){
// Encontrar o maior, de 0 a j
maior = 0;
for(i = 1; i <= j; i++){
if(v[i] > v[maior])
maior = i;
}
swap(v, j, maior);
}
return;
}	
  
Daniel	
  Arndt	
  Alves	
   Selec0on	
  Sort	
   10	
  
Complexidade	
  Computacional	
  
•  Selec%on	
  Sort	
  
– T	
  =	
  O(n2)	
  
•  Comparação	
  da	
  eficiência	
  dos	
  algoritmos:	
  
1.	
  Inser%on	
  Sort	
  
2.	
  Selec%on	
  Sort	
  
3.	
  Bubble	
  Sort	
  (faz	
  muitas	
  trocas	
  de	
  chaves)	
  
Daniel	
  Arndt	
  Alves	
   Selec0on	
  Sort	
   11	
  
Complexidade	
  Computacional	
  
Daniel	
  Arndt	
  Alves	
   Selec0on	
  Sort	
   12	
  
Desvantagens	
  
•  O	
  fato	
  de	
  o	
  conjunto	
  já	
  estar	
  ordenado	
  não	
  
ajuda	
  em	
  nada	
  (o	
  número	
  de	
  comparações	
  
con0nua	
  o	
  mesmo)	
  
•  O	
  algoritmo	
  não	
  é	
  estável,	
  isto	
  é,	
  os	
  registros	
  
com	
  chaves	
  iguais	
  nem	
  sempre	
  irão	
  manter	
  a	
  
mesma	
  posição	
  rela0va	
  de	
  antes	
  do	
  início	
  da	
  
ordenação	
  
Daniel	
  Arndt	
  Alves	
   Selec0on	
  Sort	
   13	
  
Daniel	
  Arndt	
  Alves	
   Selec0on	
  Sort	
   14	
  
Daniel	
  Arndt	
  Alves	
   Selec0on	
  Sort	
   15	
  
Imagens	
  
•  hcp://www.caelum.com.br/imagens/curso/cs14-­‐imagem.jpg	
  	
  
•  hcp://www.showmesavings.com/images/target.gif	
  	
  
•  hcp://sandersconsul0ng.com/Portals/58319/images/checklist.jpg	
  	
  
•  hcp://www.classichitspaulista.com.br/wp-­‐content/uploads/2010/12/correios-­‐triagem.jpg	
  	
  
•  hcp://www.blackboard.com/resources/connec0ons/SEARCH-­‐1.jpg	
  	
  
•  hcp://sta0c.howstuffworks.com/gif/how-­‐to-­‐plant-­‐trees-­‐shrubs-­‐and-­‐vines-­‐47.jpg	
  	
  
•  hcp://ffodissahnerak.files.wordpress.com/2007/11/grafo.gif	
  	
  
•  hcp://xpress.superpedido.com.br/Imagens/Capas200502/8536301236.jpg	
  	
  
•  hcp://imagem.buscape.com.br/capas/livros/205/031/190x190_8560031502.jpg	
  	
  
•  hcp://d.yimg.com/gg/u/7a62d58d03887ad0ea7e52fa078e0c0de7b19db6.jpeg	
  	
  
•  hcp://www.computertrainingpacaya.com/images/big-­‐0ck.jpg	
  	
  
•  hcp://dbestwebdeveloper.com/pinoy-­‐website-­‐developer/wp-­‐content/uploads/
2010/07/12282598707YbD6m.jpg	
  	
  
•  hcp://lake.k12.fl.us/moe/lib/moe/test.jpg	
  	
  
•  hcp://acccbuzz.files.wordpress.com/2010/12/grade.jpg	
  	
  
•  hcp://www.vshandw.com/images/icon.informa0on.gif	
  	
  
•  hcp://cs.bloomington.k12.mn.us/modules/groups/homepagefiles/cms/1597624/Image/Icons/
calendar+icon3.png	
  	
  
•  hcp://www.goldb.org/goldblog/cmg_images/real_programmers_binary.jpg	
  
Daniel	
  Arndt	
  Alves	
   Selec0on	
  Sort	
   16	
  
Obrigado	
  
	
  
Daniel	
  Arndt	
  Alves	
  
daniel.alves@mackenzie.br	
  
Daniel	
  Arndt	
  Alves	
   Selec0on	
  Sort	
   17	
  

Selection Sort

  • 1.
    Universidade Presbiteriana Mackenzie   Aula  4:  Selec+on  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   Selec0on  Sort   1  
  • 2.
    Tópicos  da  Aula   •  Selec%on  Sort   •  Complexidade  Computacional   •  Desvantagens   Daniel  Arndt  Alves   Selec0on  Sort   2  
  • 3.
    •  Um  dos  algoritmos  mais  simples   •  Mais  recomendado  para  conjuntos  pequenos   •  Procedimento:   – Selecione  o  menor  item  do  conjunto  e  troque-­‐o   com  o  item  que  está  na  posição  i   – Repita  essas  operações  com  os  demais  itens  até   que  reste  apenas  um  elemento   Selection Sort Daniel  Arndt  Alves   Selec0on  Sort   3  
  • 4.
    Selection Sort •  Oalgoritmo de ordenação selection sort permite ordenar os valores num vetor, por exemplo: a[0] <= a[1] <= a[2] … <= a[a.length-1] •  O algoritmo selection sort coloca o menor item em a[0], o seguinte menor item em a[1], e assim sucessivamente até ao último item. for(i = 0; i <a.length-1; i++) coloca o io item menor em a[i] Daniel  Arndt  Alves   Selec0on  Sort   4  
  • 5.
    Selection Sort •  Selectionsort começa por procurar o menor item do array e troca-o com o item a[0]. •  Selection sort continua procurando o próximo menor item e troca-o com as sucessivos itens do array a. •  Selection sort termina quando já só existe um item. Daniel  Arndt  Alves   Selec0on  Sort   5  
  • 6.
    Selec%on  Sort   • Na  primeira  etapa  seleciona-­‐se  o  maior  valor   entre  N  elementos  e  move-­‐se  para  a  “área  de   saída”   •  Na  segunda  etapa  seleciona-­‐se  o  maior  valor   entre  N-­‐1  elementos  e  move-­‐se  para  a  “área   de  saída”   •  Repete-­‐se  o  processo  até  que  N  registros   tenham  sido  selecionados   Daniel  Arndt  Alves   Selec0on  Sort   6  
  • 7.
    Selec%on  Sort   O   R   D   E   N   A   1   2   3   4   5   6   Chaves  Iniciais:   i=1:   A   R   D   E   N   O   A   D   R   E   N   O   A   D   E   R   N   O   A   D   E   N   R   O   A   D   E   N   O   R   i=2:   i=3:   i=4:   i=5:   Daniel  Arndt  Alves   Selec0on  Sort   7  
  • 8.
    Selection Sort Daniel  Arndt  Alves   Selec0on  Sort   8  
  • 9.
    Selec%on  Sort   Daniel  Arndt  Alves   Selec0on  Sort   9  
  • 10.
    Selec%on  Sort   publicvoid straightSelectionSort(int[] v, int n){ int j, i, maior; for(j = n-1; j >= 1; j--){ // Encontrar o maior, de 0 a j maior = 0; for(i = 1; i <= j; i++){ if(v[i] > v[maior]) maior = i; } swap(v, j, maior); } return; }   Daniel  Arndt  Alves   Selec0on  Sort   10  
  • 11.
    Complexidade  Computacional   • Selec%on  Sort   – T  =  O(n2)   •  Comparação  da  eficiência  dos  algoritmos:   1.  Inser%on  Sort   2.  Selec%on  Sort   3.  Bubble  Sort  (faz  muitas  trocas  de  chaves)   Daniel  Arndt  Alves   Selec0on  Sort   11  
  • 12.
    Complexidade  Computacional   Daniel  Arndt  Alves   Selec0on  Sort   12  
  • 13.
    Desvantagens   •  O  fato  de  o  conjunto  já  estar  ordenado  não   ajuda  em  nada  (o  número  de  comparações   con0nua  o  mesmo)   •  O  algoritmo  não  é  estável,  isto  é,  os  registros   com  chaves  iguais  nem  sempre  irão  manter  a   mesma  posição  rela0va  de  antes  do  início  da   ordenação   Daniel  Arndt  Alves   Selec0on  Sort   13  
  • 14.
    Daniel  Arndt  Alves   Selec0on  Sort   14  
  • 15.
    Daniel  Arndt  Alves   Selec0on  Sort   15  
  • 16.
    Imagens   •  hcp://www.caelum.com.br/imagens/curso/cs14-­‐imagem.jpg     •  hcp://www.showmesavings.com/images/target.gif     •  hcp://sandersconsul0ng.com/Portals/58319/images/checklist.jpg     •  hcp://www.classichitspaulista.com.br/wp-­‐content/uploads/2010/12/correios-­‐triagem.jpg     •  hcp://www.blackboard.com/resources/connec0ons/SEARCH-­‐1.jpg     •  hcp://sta0c.howstuffworks.com/gif/how-­‐to-­‐plant-­‐trees-­‐shrubs-­‐and-­‐vines-­‐47.jpg     •  hcp://ffodissahnerak.files.wordpress.com/2007/11/grafo.gif     •  hcp://xpress.superpedido.com.br/Imagens/Capas200502/8536301236.jpg     •  hcp://imagem.buscape.com.br/capas/livros/205/031/190x190_8560031502.jpg     •  hcp://d.yimg.com/gg/u/7a62d58d03887ad0ea7e52fa078e0c0de7b19db6.jpeg     •  hcp://www.computertrainingpacaya.com/images/big-­‐0ck.jpg     •  hcp://dbestwebdeveloper.com/pinoy-­‐website-­‐developer/wp-­‐content/uploads/ 2010/07/12282598707YbD6m.jpg     •  hcp://lake.k12.fl.us/moe/lib/moe/test.jpg     •  hcp://acccbuzz.files.wordpress.com/2010/12/grade.jpg     •  hcp://www.vshandw.com/images/icon.informa0on.gif     •  hcp://cs.bloomington.k12.mn.us/modules/groups/homepagefiles/cms/1597624/Image/Icons/ calendar+icon3.png     •  hcp://www.goldb.org/goldblog/cmg_images/real_programmers_binary.jpg   Daniel  Arndt  Alves   Selec0on  Sort   16  
  • 17.
    Obrigado     Daniel  Arndt  Alves   daniel.alves@mackenzie.br   Daniel  Arndt  Alves   Selec0on  Sort   17