Pergunta

Precisamos de um sistema de "classificação" em um projeto em que estamos trabalhando, semelhante ao do SO.No entanto, no nosso existem múltiplas entidades que precisam ser "marcadas" com um voto positivo (apenas para cima, nunca para baixo, como um incremento).Às vezes, precisaremos mostrar todas as entidades na ordem de classificação mais alta, independentemente do tipo de entidade, basicamente misturando os conjuntos de resultados, eu acho.Quais estruturas/algoritmos de dados você usa para implementar isso de forma que seja flexível e ainda escalável?

Foi útil?

Solução

Como o algoritmo de classificação do Reddit é incrível, faz muito sentido dar uma olhada nele, se não copiá-lo:


Dado o horário em que a entrada foi postada A e o horário de 7h46min43s.8 de dezembro de 2005 B, não temosé como sua diferença em segundos:

té =A-B

e x como a diferença entre o número de votos positivos U e o número de votos negativos D:

x = você - D

Onde

y = 1 if x > 0
y = 0 if x = 0
y = -1 if x < 0

e z como o valor máximo do valor absoluto de x e 1:

z = |x| if |x| >= 1
z = 1 if |x| < 1

temos a classificação como uma função ƒ(té, y, z):

ƒ(té, y, z) = registro10 z + (y • té)/45000


Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top