Lista de algoritmos

Origem: Wikipédia, a enciclopédia livre.

Abaixo segue a lista de algoritmos:

Algoritmos combinatórios[editar | editar código-fonte]

Algoritmos de busca[editar | editar código-fonte]

Ver artigo principal: Algoritmo de busca

Algoritmos gerais de busca[editar | editar código-fonte]

  • Busca linear: encontra um elemento numa lista não ordenada.
  • Busca binária: encontra um elemento numa lista ordenada.
  • Pesquisa binária numa sequência cíclica: encontra o menor elemento numa lista formada por elementos em sequência de forma cíclica.
  • Pesquisa binária em sequências de intervalo desconhecido: neste caso, não se sabe o tamanho da sequência. Encontra um intervalo onde está o elemento procurado, depois aplica busca binária.
  • Busca em árvore binária: encontra elemento em árvore binária.
  • Busca em largura: percorre uma árvore nível por nível.
  • Busca em profundidade: percorre um árvore galho por galho.
  • Busca pela melhor escolha: percorre uma árvore em uma ordem de "provável importância", usando uma fila de prioridades.
  • Busca A*: um caso especial da busca pela melhor escolha.
  • Busca hash: encontra um elemento em uma lista indexada por uma tabela hash.
  • Busca preditiva.

Busca em strings[editar | editar código-fonte]

Busca em grafos[editar | editar código-fonte]

Algoritmos de ordenação[editar | editar código-fonte]

Ver artigo principal: Algoritmo de ordenação
  • Bogosort: ineficiente, mais utilizado para ensinar o funcionamento dos algoritmos de ordenação.
  • Classificação bolha: para cada par de índices, mude os itens de posição se estiverem fora de ordem.
  • Bucket sort.
  • Classificação pente: Parecido com o método bolha.
  • Cocktail sort.
  • Count sort: Ordena um arranjo, posicionando o valor devido ao seu tamanho comparado aos outros.
  • Counting sort.
  • Gnome sort.
  • Heapsort: converta a lista num heap, continue removendo o maior elemento deste e adicionando-o no fim da lista.
  • Ordenação por inserção: determina à qual posição o item atual pertence na lista dos classificados e o insere ali.
  • Classificação fusão: classifique a primeira e a segunda metade da lista separadamente, e então junte as listas classificadas.
  • Pancake sorting.
  • Pigeonhole sort.
  • Quicksort: divida a lista em duas, com todos os itens da primeira lista sendo menores que os itens da segunda; e então classifique as duas listas. Certamente esse é o método de escolha mais rápido.
  • Radix sort: classifica strings letra por letra.
  • Ordenação por seleção: escolha o menor dos elementos restantes, adicione ao final/início da lista classificada.
  • Shell sort: uma tentativa de otimização do insertion sort.
  • Smoothsort: É um variação do Heap sort.
  • Stupid sort.
  • Topological sort.

Algoritmos de compressão[editar | editar código-fonte]

Ver artigo principal: Compressão de dados

Algoritmos de álgebra linear e geometria analítica[editar | editar código-fonte]

Geometria computacional[editar | editar código-fonte]

Ver artigo principal: Geometria computacional

Computação gráfica[editar | editar código-fonte]

Ver artigo principal: Computação gráfica

Algoritmos criptográficos[editar | editar código-fonte]

Ver artigo principal: Criptografia

Algoritmos de sistemas distribuídos[editar | editar código-fonte]

Ver artigo principal: Sistemas distribuídos

Algoritmos numéricos[editar | editar código-fonte]

Algoritmos numéricos para uso geral[editar | editar código-fonte]

Algoritmos teórico-matemáticos[editar | editar código-fonte]

  • Algoritmo de Euclides: calcula o MDC.
  • Fatorização de inteiros: quebra um inteiro em seus fatores primitivos.
    • Divisão por tentativas.
    • Fatorização da curva elíptica de Lenstra.
    • Pollard's rho algorithm.
    • Pollard's p-1 algorithm.
    • Congruence of squares.
    • Quadratic sieve.
    • Special number field sieve.
    • General number field sieve.
  • Algoritmo de multiplicação: rápida multiplicação de dois números.
  • Teste de primitividades: determina se um dado número é primitivo.

Algoritmos de processamento de sinais digitais[editar | editar código-fonte]

  • CORDIC: técnica de cálculo rápido de função trigonométrica.
  • Fast Fourier transform: determina as frequências contidas num (segmento de um) sinal.
    • Algoritmo de Cooley-Tukey FFT.
  • Rainflow-counting algorithm: Reduz uma história de stress complexa em uma contagem de revezes de stress elementares para uso em análise de fadiga.
  • Osem: algoritmo para processamento de imagens médicas.

Algoritmos de otimização[editar | editar código-fonte]

Ver artigo principal: Otimização combinatória

Análise gramatical[editar | editar código-fonte]

Algoritmos quânticos[editar | editar código-fonte]

Ver artigo principal: Computação quântica

Algoritmos evolutivos[editar | editar código-fonte]

Ver artigo principal: Algoritmo evolutivo

Outros[editar | editar código-fonte]

  • Subset-sum: Aceita a completa linguagem NP Subset-sum em polinominal.
  • CORDIC: Técnica de computação função-rápida.
  • Cyclic redundancy check: cálculo de verificação de palavra.
  • Halt: Ninguém sabe se este programa 43-bytes C sempre para.
  • Knuth-Bendix completion algorithm: para reescrever regras de sistemas.
  • Parity: simples e rápida técnica de detecção de erros, com base num número par ou ímpar.
  • CHS conversion: conversão entre endereçamento de disco nos sistemas.
  • Algoritmo Xor Swap: troca os valores de duas variáveis sem o uso do buffer.

Veja também[editar | editar código-fonte]