BUBBLE SORTDefiniçãoO 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.Características:Algoritmo muito simples;
Lento para ordenar grande número de elementos, mas eficiente com poucos elementos;
O(n2) comparações e trocas;
Adaptativo: O(n) comparações e trocas se o algoritmo estiver parcialmente ordenado.
Pior Caso: O(n2), Caso Médio O(n2) melhor caso O(n).BUBBLE SORTDemonstração
SELECTION SORTDefiniçãoO 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.Pior Caso: O(n2), Caso Médio O(n2) Melhor caso O(n2).
SELECTION SORTDemonstração:
QUICK SORTDefiniçãoO 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.  Complexidade:Pior Caso:      O(n2)Caso Médio: O(nlogn)Melhor caso:O(nlogn).
QUICK SORTDemonstração
MERGE SORTDefiniçãoSua 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.Os três passos úteis dos algoritmos dividir-para-conquistar, ou divide andconquer, que se aplicam ao merge sort são:Dividir: Dividir os dados em subsequências pequenas;Conquistar: Classificar as duas metades recursivamente aplicando o merge sort;Combinar: Juntar as duas metades em um único conjunto já classificado.Complexidade:Pior Caso:      O(nlogn)Caso Médio: O(nlogn)Melhor caso:O(nlogn).
MERGE SORTDemonstração
HEAP SORTDefinição• HeapSorttambém é um método de seleção– ordena através de sucessivas seleções doelemento correto a ser posicionado em umsegmento ordenado• O HeapSortutiliza um heap binário paramanter o próximo elemento a serselecionado– heap binário: árvore binária mantida na formade vetor– o heapé gerado e mantido no próprio vetor aser ordenado (no segmento não-ordenado)Complexidade:Pior Caso:      O(nlogn)Caso Médio: O(nlogn)Melhor caso:O(nlogn).
HEAP SORTVocê sabe o que um Heap?Primeiro vamos entender o que é um Heap.
HEAP SORTHeapBinário – Exemplo• raiz da árvore: primeira posição do vetor• filhos de um nodo na posição i: posições 2i e 2i + 1• pai de um nodo na posição i: posição ëi / 2û
HEAP SORTHeapBinário Máximo• HeapBinário tal que um nodo pai tem valor maior ou igual ao valor dos nodos filhos
HEAP SORTFuncionamento1. Transformação do vetor em um heap bináriomáximo (Construção do Heap)2. Ordenação– a cada iteração seleciona-se o maior elemento(na raiz do heap) e o adiciona no início de umsegmento ordenado– após cada seleção de elemento, o heap deveser reorganizado para continuar sendo um heapbinário máximo.
HEAP SORT
HEAP SORT• Método auxiliar responsável pelo ajuste deum elemento no heap– método ajustaElemento(posição, vetor.lenght)– realiza trocas no heap para posicionarcorretamente um elemento• Exemplo: ajustaElemento(1, 7)
HEAP SORTAjuste de Elementos• Executa até que o elemento seja transferidopara uma posição i > ën/2û– após a posição ën/2û , o elemento já é um nodofolha
HEAP SORTEtapa de Ordenação• A cada iteração seleciona o maiorelemento do heap (sempre está na primeiraposição) e o troca com o elemento no finaldo segmento não-ordenado• Após a troca, o novo elemento raiz doheap deve ser ajustado (deve-se chamarajustaElemento para o nodo raiz)• O processo termina quando o heap tiversomente 1 elemento (vetor ordenado)

Algoritmos de busca

  • 1.
    BUBBLE SORTDefiniçãoO bubblesort, ouordenaçã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.Características:Algoritmo muito simples;
  • 2.
    Lento para ordenargrande número de elementos, mas eficiente com poucos elementos;
  • 3.
  • 4.
    Adaptativo: O(n) comparaçõese trocas se o algoritmo estiver parcialmente ordenado.
  • 5.
    Pior Caso: O(n2),Caso Médio O(n2) melhor caso O(n).BUBBLE SORTDemonstração
  • 6.
    SELECTION SORTDefiniçãoO selectionsort (ordenação porseleçã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.Pior Caso: O(n2), Caso Médio O(n2) Melhor caso O(n2).
  • 7.
  • 8.
    QUICK SORTDefiniçãoO 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. Complexidade:Pior Caso: O(n2)Caso Médio: O(nlogn)Melhor caso:O(nlogn).
  • 9.
  • 10.
    MERGE SORTDefiniçãoSua idéiabá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.Os três passos úteis dos algoritmos dividir-para-conquistar, ou divide andconquer, que se aplicam ao merge sort são:Dividir: Dividir os dados em subsequências pequenas;Conquistar: Classificar as duas metades recursivamente aplicando o merge sort;Combinar: Juntar as duas metades em um único conjunto já classificado.Complexidade:Pior Caso: O(nlogn)Caso Médio: O(nlogn)Melhor caso:O(nlogn).
  • 11.
  • 12.
    HEAP SORTDefinição• HeapSorttambémé um método de seleção– ordena através de sucessivas seleções doelemento correto a ser posicionado em umsegmento ordenado• O HeapSortutiliza um heap binário paramanter o próximo elemento a serselecionado– heap binário: árvore binária mantida na formade vetor– o heapé gerado e mantido no próprio vetor aser ordenado (no segmento não-ordenado)Complexidade:Pior Caso: O(nlogn)Caso Médio: O(nlogn)Melhor caso:O(nlogn).
  • 13.
    HEAP SORTVocê sabeo que um Heap?Primeiro vamos entender o que é um Heap.
  • 14.
    HEAP SORTHeapBinário –Exemplo• raiz da árvore: primeira posição do vetor• filhos de um nodo na posição i: posições 2i e 2i + 1• pai de um nodo na posição i: posição ëi / 2û
  • 15.
    HEAP SORTHeapBinário Máximo•HeapBinário tal que um nodo pai tem valor maior ou igual ao valor dos nodos filhos
  • 16.
    HEAP SORTFuncionamento1. Transformaçãodo vetor em um heap bináriomáximo (Construção do Heap)2. Ordenação– a cada iteração seleciona-se o maior elemento(na raiz do heap) e o adiciona no início de umsegmento ordenado– após cada seleção de elemento, o heap deveser reorganizado para continuar sendo um heapbinário máximo.
  • 17.
  • 18.
    HEAP SORT• Métodoauxiliar responsável pelo ajuste deum elemento no heap– método ajustaElemento(posição, vetor.lenght)– realiza trocas no heap para posicionarcorretamente um elemento• Exemplo: ajustaElemento(1, 7)
  • 19.
    HEAP SORTAjuste deElementos• Executa até que o elemento seja transferidopara uma posição i > ën/2û– após a posição ën/2û , o elemento já é um nodofolha
  • 20.
    HEAP SORTEtapa deOrdenação• A cada iteração seleciona o maiorelemento do heap (sempre está na primeiraposição) e o troca com o elemento no finaldo segmento não-ordenado• Após a troca, o novo elemento raiz doheap deve ser ajustado (deve-se chamarajustaElemento para o nodo raiz)• O processo termina quando o heap tiversomente 1 elemento (vetor ordenado)