1
resposta

Não entendi a função de comparação do artifo

1 resposta

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:

  • Se 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.
  • Se 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.
  • Se 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!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!