Oi!
Não entendi nada da função de comparação apresentada no artigo.
Oi!
Não entendi nada da função de comparação apresentada no artigo.
Olá, Bernardo! Tudo certo?
Inicialmente vemos que, para uma lista de números, não basta apenas chamar o sort()
pois a funçãosort()
usa por padrão a ordenação alfabética baseada na tabela Unicode. Ou seja, devemos criar o nosso critério de ordenação para os números, usar a nossa própria função de comparação.
Uma forma de você entender o comportamento do sort()
é pensar que o sort()
fará a classificação dos elementos com base no que for retornado da função comparaNumeros(a, b)
da seguinte forma:
comparaNumeros(a, b)
for menor que zero, o método sort()
entenderá que a deve possuir um índice menor que b. Portanto, o a virá antes de b.comparaNumeros(a, b)
for maior que zero, o método sort()
entenderá que b deve possuir um índice menor que a. Portanto, o b virá antes de a.comparaNumeros(a, b)
retornar zero, o método sort()
não irá alterar as posições.Assim, se quisermos que nossa lista seja ordenada de forma crescente (do menor para o maior) usando a função comparaNumeros(a, b)
, pensamos da seguinte forma:
"Para dois valores (a e b) eu quero que o menor entre eles venha primeiro (ordem crescente), ou seja, tenha índice menor que zero". Isso em código pode ser escrito como:
if(a < b) return -1; //se a for menor que b, o return -1 no sort colocará o b antes do a
Ficou mais claro? Caso tenha ficado com alguma dúvida, não deixe de compartilhar!
Continue praticando e evoluindo na sua jornada.
Bons estudos e até mais!