Articles

O que é classificação?


Melhor resposta

Em ciência da computação, um algoritmo de classificação é um algoritmo que coloca os elementos de uma lista em uma determinada ordem. As ordens usadas com mais frequência são a ordem numérica e a ordem lexicográfica. A classificação eficiente é importante para otimizar a eficiência de outros algoritmos (como algoritmos de pesquisa e mesclagem) que exigem que os dados de entrada estejam em listas classificadas. A classificação também é frequentemente útil para canonizar dados e para produzir saída legível. Mais formalmente, a saída de qualquer algoritmo de classificação deve satisfazer duas condições:

  • A saída está em ordem não decrescente (cada elemento não é menor que o elemento anterior de acordo com a ordem total desejada);
  • A saída é uma permutação (uma reordenação, mas mantendo todos os elementos originais) da entrada.

Além disso, os dados de entrada são frequentemente armazenados em uma matriz, que permite acesso aleatório, em vez de uma lista, que permite apenas acesso sequencial; embora muitos algoritmos possam ser aplicados a qualquer tipo de dado após a modificação adequada.

Os algoritmos de classificação são frequentemente referidos como uma palavra seguida pela palavra “classificar” e gramaticalmente são usados ​​em inglês como frases nominais, para exemplo na frase “é ineficiente usar classificação por inserção em listas grandes”, a frase classificação por inserção se refere ao algoritmo de classificação por classificação por inserção.

Resposta

Classificar um bilhão de objetos é definitivamente ao alcance se você puder mantê-los na memória. Você precisa de O (n log n) comparado, certo? Se não for possível, você pode classificar o que cabe na memória do seu computador (ou computadores, se tiver um sistema distribuído) e mesclar os resultados. Em um ponto da década de 1990, uma classificação de mesclagem modificada tinha o recorde mundial de velocidade e um super linear por velocidade de CPU.

Outra coisa que você faz é quando N fica grande (ou, na verdade, sempre que algo fica lento para entradas razoáveis), você dá uma olhada no que você realmente precisa.

Por que você precisa classificar os objetos? Se você está apenas procurando por duplicatas, existem maneiras muito mais rápidas! Se você deseja processar os 5\% inferiores (ou superiores), existem algoritmos O (n) que podem particionar com base na postagem posição de classificação!

Quando as coisas ficam lentas, você olha o que está acontecendo, e antes de descobrir se esse é o algoritmo mais rápido para fazer o que quer que seja, você descobre se é realmente a coisa certa a fazer (Exceção: se o mais rápido “qualquer coisa” é um thin já depurado que você pode simplesmente inserir, então pode ser melhor fazer isso … como se você estivesse Ao testar se um array contém algum elemento muitas vezes, pode ser mais simples substituir o array por um conjunto e ver se agora é rápido o suficiente para que você não se importe se você fizer mais seis horas de pesquisa, poderá eliminar metade de os cheques ou qualquer outra coisa).

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *