1259 - Pares e Ímpares

Vamos usar alguns critérios mais avançados para ordenar este vetor.

Descrição

Solução

Veja a página de Ordenação para entender como fazer critérios avançados para a ordenação de elementos. A ideia aqui é verificar se cada um dos números é par ou ímpar e comparar de acordo, tudo no mesmo vetor.

Na versão em JavaScript, usar lines.shift() é lento demais, então tive que utilizar o acesso direto.

Na versão em Python, usamos dois vetores por eu não ter conseguido pensar em uma função que ordenasse os dois tipos de número no mesmo vetor. Entretanto, perceba como podemos usar a mesma função em dois vetores diferentes, mudando apenas o parâmetro reverse.

#include <stdlib.h>
#include <stdio.h>

int comp(const void *a, const void *b)
{
    int A = *(int *)a, B = *(int *)b;

    if (A % 2 == 0)
        if (B % 2 == 0)
            return A - B;
        else
            return -1;
    else if (B % 2 == 0)
        return 1;
    else
        return B - A;
}

int main()
{
    int n, numeros[100000];

    scanf("%d", &n);

    for (int i = 0; i < n; ++i)
    {
        scanf("%d", &numeros[i]);
    }

    qsort(numeros, n, sizeof(int), comp);

    for (int i = 0; i < n; ++i)
    {
        printf("%d\n", numeros[i]);
    }

    return 0;
}

Last updated