Algoritmos de busca

0 views
5,323 views

Published on

Slides mostrando os principais algoritmos de busca, Bubble Sort, Selection Sort, Quick Sort, Merge Sort e Heap Sort.

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
0
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
145
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Algoritmos de busca

  1. 1. BUBBLE SORT<br />Definição<br />O bubblesort, ou ordenação por flutuação (literalmente "por bolha"), é um algoritmo de ordenação dos mais simples. A ideia é percorrer o vector diversas vezes, a cada passagem fazendo flutuar para o topo o maior elemento da sequência. Essa movimentação lembra a forma como as bolhas em um tanque de água procuram seu próprio nível, e disso vem o nome do algoritmo.<br />Características:<br /><ul><li>Algoritmo muito simples;
  2. 2. Lento para ordenar grande número de elementos, mas eficiente com poucos elementos;
  3. 3. O(n2) comparações e trocas;
  4. 4. Adaptativo: O(n) comparações e trocas se o algoritmo estiver parcialmente ordenado.
  5. 5. Pior Caso: O(n2), Caso Médio O(n2) melhor caso O(n).</li></li></ul><li>BUBBLE SORT<br />Demonstração <br />
  6. 6. SELECTION SORT<br />Definição<br />O selectionsort (ordenação por seleção) é um algoritmo de ordenação baseado em se passar sempre o menor valor do vetor para a primeira posição (ou o maior dependendo da ordem requerida), depois o de segundo menor valor para a segunda posição, e assim é feito sucessivamente com os (n-1) elementos restantes, até os últimos dois elementos.<br />Pior Caso: O(n2), Caso Médio O(n2) Melhor caso O(n2).<br />
  7. 7. SELECTION SORT<br />Demonstração: <br />
  8. 8. QUICK SORT<br />Definição<br />O QuickSort é um algoritmo baseado em Divisão e Conquista. Isso significa que ele divide sucessivamente um problema e partes menores . O próximo passo é solucionar recursivamente os sub-problemas, ou seja ordenar os elementos, e só então combinar as soluções menores de forma a obter a solução final. <br />Complexidade:<br />Pior Caso: O(n2)<br />Caso Médio: O(nlogn)<br />Melhor caso:O(nlogn).<br />
  9. 9. QUICK SORT<br />Demonstração<br />
  10. 10. MERGE SORT<br />Definição<br />Sua idéia básica é muito fácil: criar uma sequência ordenada a partir de duas outras também ordenadas. Para isso, ele divide a sequência original em pares de dados, ordena-as; depois as agrupa em sequências de quatro elementos, e assim por diante, até ter toda a sequência dividida em apenas duas partes.<br />Os três passos úteis dos algoritmos dividir-para-conquistar, ou divide andconquer, que se aplicam ao merge sort são:<br />Dividir: Dividir os dados em subsequências pequenas;<br />Conquistar: Classificar as duas metades recursivamente aplicando o merge sort;<br />Combinar: Juntar as duas metades em um único conjunto já classificado.<br />Complexidade:<br />Pior Caso: O(nlogn)<br />Caso Médio: O(nlogn)<br />Melhor caso:O(nlogn).<br />
  11. 11. MERGE SORT<br />Demonstração<br />
  12. 12. HEAP SORT<br />Definição<br />• HeapSorttambém é um método de seleção<br />– ordena através de sucessivas seleções do<br />elemento correto a ser posicionado em um<br />segmento ordenado<br />• O HeapSortutiliza um heap binário para<br />manter o próximo elemento a ser<br />selecionado<br />– heap binário: árvore binária mantida na forma<br />de vetor<br />– o heapé gerado e mantido no próprio vetor a<br />ser ordenado (no segmento não-ordenado)<br />Complexidade:<br />Pior Caso: O(nlogn)<br />Caso Médio: O(nlogn)<br />Melhor caso:O(nlogn).<br />
  13. 13. HEAP SORT<br />Você sabe o que um Heap?<br />Primeiro vamos entender o que é um Heap.<br />
  14. 14. HEAP SORT<br />HeapBinário – Exemplo<br />• raiz da árvore: primeira posição do vetor<br />• filhos de um nodo na posição i: posições 2i e 2i + 1<br />• pai de um nodo na posição i: posição ëi / 2û<br />
  15. 15. HEAP SORT<br />HeapBinário Máximo<br />• HeapBinário tal que um nodo pai tem valor maior ou igual ao valor dos nodos filhos<br />
  16. 16. HEAP SORT<br />Funcionamento<br />1. Transformação do vetor em um heap binário<br />máximo (Construção do Heap)<br />2. Ordenação<br />– a cada iteração seleciona-se o maior elemento<br />(na raiz do heap) e o adiciona no início de um<br />segmento ordenado<br />– após cada seleção de elemento, o heap deve<br />ser reorganizado para continuar sendo um heap<br />binário máximo.<br />
  17. 17. HEAP SORT<br />
  18. 18. HEAP SORT<br />• Método auxiliar responsável pelo ajuste de<br />um elemento no heap<br />– método ajustaElemento(posição, vetor.lenght)<br />– realiza trocas no heap para posicionar<br />corretamente um elemento<br />• Exemplo: ajustaElemento(1, 7)<br />
  19. 19. HEAP SORT<br />Ajuste de Elementos<br />• Executa até que o elemento seja transferido<br />para uma posição i > ën/2û<br />– após a posição ën/2û , o elemento já é um nodo<br />folha<br />
  20. 20. HEAP SORT<br />Etapa de Ordenação<br />• A cada iteração seleciona o maior<br />elemento do heap (sempre está na primeira<br />posição) e o troca com o elemento no final<br />do segmento não-ordenado<br />• Após a troca, o novo elemento raiz do<br />heap deve ser ajustado (deve-se chamar<br />ajustaElemento para o nodo raiz)<br />• O processo termina quando o heap tiver<br />somente 1 elemento (vetor ordenado)<br />
  21. 21. HEAP SORT<br />Nesse caso, um Heap Máximo.<br />
  22. 22. HEAP SORT<br />
  23. 23. FIM<br />Referências:<br />Wikipédia<br />Vimeo.com<br />Ordenação de Dados(III)<br />UFSC-CTC-INE<br />INE5384 - Estruturas de Dados<br />Prof. Ronaldo S. Mello<br />UNICAMP<br />Fernando Ferreira<br />

×