O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Algoritmos de busca

6.047 visualizações

Publicada em

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

Publicada em: Tecnologia

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 />

×