Calculadora de ordem crescente
Resultado
Ordenado (do menor para o maior)
- Mínimo
- -10
- Máximo
- 12.5
Ordenar uma lista de números do menor para o maior significa colocá-los na ordem em que eles ficariam numa reta numérica, lendo da esquerda para a direita. A lista 7, −3, 12,5, 0, −10, 4 vira −10, −3, 0, 4, 7, 12,5, e as duas pontas dessa reta são o menor valor e o maior. Esta página faz isso com qualquer lista que você cole, até duzentos números, e devolve a lista em ordem crescente junto com o mínimo e o máximo. É um trabalho pequeno e vale fazê-lo com cuidado, porque o jeito óbvio de fazê-lo está errado em dois pontos. O primeiro é que os números precisam ser comparados como números, e não como texto. Ordenar aqueles mesmos valores como texto dá −10, −3, 0, 12,5, 4, 7 — põe o 12,5 antes do 4, porque o caractere 1 vem antes do caractere 4 e a comparação nunca chega ao algarismo depois da vírgula. Numa lista de números de um algarismo só o erro não aparece nunca, e é exatamente isso que o torna perigoso: ele sobrevive a todo teste que não inclua por acaso um valor de dois algarismos ou um negativo, e depois aparece no pior momento em cima de uma lista que inclui. O segundo ponto são os números negativos, onde a mesma armadilha tem um espelho. Como texto, −10 vem antes de −2, o que por acaso está certo, mas −3 vem antes de −5, o que está errado. O engano que se comete com negativos costuma ser outro: achar que −2 é menor que −10 só porque 2 é menor que 10. A ordem correta põe −20 antes de −10 antes de −3, porque mais à esquerda na reta quer dizer menor, e não mais algarismos. Duas coisas que a página faz e que passam fáceis. Ela mantém os valores repetidos, então 5, 5, 3 sai como 3, 5, 5 — tirar repetições é outra operação, e fazê-la aqui faria a resposta deixar de conter exatamente os números que você deu. E ela imprime cada valor na forma canônica, então 12,50 vira 12.5 e +7 vira 7, porque zeros no fim e sinal de mais na frente não fazem parte de um valor. Se você os digitou assim de propósito, a saída não vai preservar isso. Vale saber de antemão também que esta página aceita a vírgula decimal do português na entrada e imprime o ponto na saída, sem separador de milhar: digitando 1,5 e 2,25 você recebe de volta 1.5 e 2.25. Ordenar uma lista é o primeiro passo na maioria das coisas que se quer de um conjunto de números: a mediana é o meio da lista ordenada, a amplitude são as duas pontas dela, e os quartis são lidos ali em posições fixas.
Fórmula
7; −3; 12,5; 0; −10; 4 ⇒ −10, −3, 0, 4, 7, 12,5, com mínimo = −10 e máximo = 12,5
- n
- Quantos números há na lista — entre 1 e 200. Um só é permitido e dá uma lista de um elemento, o que é genuinamente correto e não um caso degenerado: um único número já está em ordem crescente, e ele é ao mesmo tempo o menor e o maior do conjunto
- a ≤ b
- A comparação em que a ordenação se apoia, e a correção inteira dela. É uma comparação numérica, então −10 ≤ −3 e 9 ≤ 10 valem as duas. Ordenar como texto colocaria, por acidente, −10 antes de −3 e, pelo mesmo acidente, 10 antes de 9, porque compara caractere por caractere da esquerda para a direita em vez de comparar valores
- −10, −3, 0, 4, 7, 12,5
- A saída ordenada, e uma permutação da entrada — seis valores entram, seis valores saem, os mesmos seis. É essa a invariante a conferir se você algum dia duvidar do resultado: a contagem tem de bater, e cada valor que você pôs tem de aparecer exatamente tantas vezes quantas você pôs. Nada nesta página soma, tira ou combina números
- mínimo = −10
- O primeiro elemento da lista ordenada, tomado dela e não procurado numa varredura separada. Na reta numérica é o ponto mais à esquerda. Ele não é o mesmo que a entrada de aparência menor: −10 parece mais curto que −3, e é o número menor
- máximo = 12,5
- O último elemento da lista ordenada, também lido dela em vez de procurado. A distância entre ele e o mínimo é a amplitude, que é a única estatística que não precisa de mais nada além destas duas saídas — e a Calculadora de amplitude calcula exatamente isso a partir do mesmo par
- 3, 5, 5
- O que os valores repetidos fazem. A entrada 5, 5, 3 ordena para 3, 5, 5 — a repetição sobrevive. Jogá-la fora deixaria a lista mais bonita de olhar e quebraria a invariante acima, além de mudar em silêncio a resposta de qualquer pergunta sobre quantos valores existem, inclusive a mediana
Ler uma mediana é o motivo mais comum para ordenar: a mediana é o valor do meio da lista ordenada, ou a média dos dois do meio quando a contagem é par, e nenhuma das duas pode ser lida de uma lista desordenada. O mesmo vale para quartis e percentis, que são definidos pela posição na ordem crescente. Um segundo uso é a amplitude, que é simplesmente o maior valor menos o menor, e esta página imprime os dois números direto — a Calculadora de amplitude faz a subtração se for só isso que você quer. Um terceiro é o humano de sempre: uma coluna de medidas, preços, idades ou notas colada de uma planilha fica muito mais fácil de ler depois de ordenada, porque os extremos saltam aos olhos e os agrupamentos ficam visíveis. É a mesma razão de uma lista ordenada ser a primeira coisa que se desenha, já que uma contagem de frequência e um histograma começam os dois ali. Um quarto uso é conferir a ordenação da própria planilha: ordenar como texto em vez de como números é um erro comum quando a coluna foi formatada de um jeito estranho, e o sintoma é exatamente o descrito acima — 10 antes de 9, ou 12,5 antes de 4. Se uma coluna ordenada parece errada para você, passar os mesmos valores por esta página diz qual dos dois está lendo a entrada errado. Depois que a lista está em ordem, as vizinhas descritivas assumem: a Calculadora de mediana lê o meio, a Calculadora de amplitude as duas pontas, a Calculadora de quartis as posições dos quartos, e a Calculadora de média a média, que é a única delas que não se importa com a ordem.
Exemplos resolvidos
Sinais misturados e um decimal: 7; −3; 12,5; 0; −10; 4
- Ache primeiro o menor valor: −10 está mais à esquerda que tudo o mais na lista
- Depois o próximo menor, −3, depois 0, depois 4, depois 7
- 12,5 é o maior, então vai por último
- A lista ordenada é −10, −3, 0, 4, 7, 12,5, e as duas pontas dela dão o mínimo e o máximo
A entrada padrão, e de propósito uma entrada incômoda: tem dois negativos, um decimal positivo e um zero, então exercita as duas armadilhas de uma vez. Repare que −10 vem primeiro mesmo sendo −3 o de aparência mais longa dos dois, e que 12,5 vem depois do 7 mesmo começando com o mesmo algarismo do 1. Ordenar isto como texto daria −10, −3, 0, 12,5, 4, 7 — a ponta negativa pareceria certa por acidente e o decimal cairia no lugar errado. Na tela, a saída sai como -10, -3, 0, 4, 7, 12.5: ponto no decimal e sem separador de milhar, porque as três saídas desta página são texto puro.
A armadilha que os algarismos únicos escondem: 9; 10; 100; 2
- Compare por valor, não pelo primeiro algarismo: 2 é menor que 9
- 10 é maior que 9, mas menor que 100
- A ordem é 2, 9, 10, 100
- O menor é 2 e o maior é 100
Quatro números curtos, todos positivos, e a lista que pega a ordenação por texto. Comparando como texto a ordem que sai é 10, 100, 2, 9 — o 10 vem primeiro e o 9 fica por último —, porque a comparação para no primeiro caractere: 1 vem antes de 2, que vem antes de 9. A ordem correta vem de comparar valores, e o sinal de que algo deu errado é que o resultado não se parece com uma reta numérica: não há arrumação dos algarismos em que o 10 fique antes do 2. Este é o caso com que vale testar qualquer código de ordenação, porque uma lista de algarismos isolados ordena certo dos dois jeitos.
Negativos em outra ordem: −5; −20; −3
- Na reta numérica, −20 é o mais à esquerda dos três
- −5 está à direita dele, e −3 é o mais à direita dos três
- Então a ordem crescente é −20, −5, −3
- O mínimo é −20 — o número de aparência maior da lista
O espelho do exemplo anterior, e o que pega leitores em vez de código. O −20 é o menor dos três ainda que tenha os maiores algarismos, porque mais à esquerda na reta quer dizer menor. Cuidado com a conclusão fácil de que a ordenação por texto acerta os negativos: ela acerta o par −20 e −5 por acidente, já que a string -20 vem antes da string -5, mas erra o par −3 e −5, em que a string -3 vem antes da string -5 — a lista inteira, como texto, sairia -20, -3, -5. O que este exemplo fixa é a armadilha do leitor, não a do código, e as duas são de sinais opostos: quem lê tende a achar que −20 é maior que −5, e quem compara como texto às vezes acerta e às vezes não.
Limitações
A lista aceita de 1 a 200 números, separados por vírgulas, pontos e vírgulas ou espaços, e os três podem vir misturados numa mesma lista. Duzentos é um limite de tamanho da lista que a página aceita, não uma proteção de desempenho — listas maiores não ficam lentas, elas são recusadas, porque um campo deste tamanho deixa de ser editável e a resposta deixa de ser legível. Os números podem ser negativos, podem ter decimais e podem ser zero, e os valores repetidos são mantidos em vez de removidos. Separadores de milhar não são entendidos: uma vírgula entre dois algarismos é lida como separador decimal, então 1,5 é um e meio, e é por isso que a forma 1.500 com ponto — a forma portuguesa de mil e quinhentos — é recusada, junto com 1,500 e com 1.234.567: o ponto no meio dos algarismos também não é aceito, então 1500 e 1,5 nunca são confundidos e uma coluna colada de uma planilha com milhares agrupados é rejeitada em vez de mal interpretada. Tire os separadores antes de colar. Atenção a uma forma que não é recusada: um grupo separado por espaço, como 1 500, é lido como dois números, 1 e 500, sem nenhum aviso — a lista sai com um elemento a mais e o mínimo e o máximo deixam de ser os que você esperava. Espaço é separador entre números nesta página, e ponto não é separador de milhar. A notação com expoente também não é entendida, então 1e5 é recusado em vez de lido como 100.000. A saída é a grafia canônica de cada valor e não uma cópia do que você digitou: 12,50 sai como 12.5, +7 sai como 7 e −0 sai como 0. Valores muito grandes passam a sair em notação de expoente a partir de 10²¹, que é onde a conversão de número para texto muda de notação sozinha; aplainar isso exigiria um segundo formatador de números, e a página não tem um. Por fim, as três saídas são texto puro, e não números formatados: o ponto decimal nunca vira vírgula e nenhum milhar é agrupado, então 1500 continua 1500 e 1,5 sai como 1.5. Esta página não tem tabela de referência: uma tabela serve para mostrar em que faixa um resultado cai, e ordenar não tem faixas. A ordem crescente é a única oferecida — para a ordem decrescente, leia a saída da direita para a esquerda.
Perguntas frequentes
- Como ordeno uma lista que tem negativos e decimais ao mesmo tempo?
- Cole a lista e deixe a página fazer o trabalho — o separador pode ser vírgula, ponto e vírgula ou espaço, e os três podem vir misturados. Negativos e decimais não mudam a regra, que é simplesmente que um número menor vai mais à esquerda. As duas coisas a que prestar atenção são que −20 é menor que −3 apesar de ter mais algarismos, e que 12,5 é maior que 4 apesar de começar com 1. Comparar valores em vez do texto dos números é toda a correção aqui.
- A ordem em que eu digito os números importa?
- Não importa nada — a página ordena o que receber, e o mesmo conjunto de valores sempre produz a mesma saída, independentemente da ordem em que chegou. É isso que torna o resultado conferível: ordene uma lista, ordene de novo e a saída é idêntica, porque só existe uma ordem crescente para um dado conjunto de valores. Os valores repetidos são o único lugar em que a forma da entrada sobrevive, já que 5, 5, 3 e 3, 5, 5 ordenam os dois para 3, 5, 5.
- Os valores repetidos são removidos?
- Não, e isso é deliberado. A saída é a entrada rearranjada, então ela tem de conter exatamente os números que você deu, cada um tantas vezes quantas você deu. Tirar as repetições seria outra operação — chama-se deduplicação, e ela muda a resposta de toda pergunta sobre a lista, inclusive quantos valores existem e qual é a mediana. Se você quer uma lista de valores distintos, isso é um passo separado, e convém que seja um passo visível.
- Por que 12,50 voltou como 12.5?
- Porque zeros no fim não fazem parte de um valor, e a página imprime a grafia canônica de cada número em vez de copiar o que você digitou. A mesma normalização transforma +7 em 7 e −0 em 0. É o único ponto em que a saída não é bem uma cópia da entrada, e vale conhecê-lo se a formatação dos seus números carrega significado para você — em valores de dinheiro, por exemplo, em que 12,50 e 12,5 leem diferente para uma pessoa mesmo sendo o mesmo número. A vírgula decimal entra como vírgula e sai como ponto, porque as três saídas desta página são texto puro.
- Posso ordenar do maior para o menor?
- A página dá a ordem crescente, e a ordem decrescente é essa mesma saída lida da direita para a esquerda — não há nada a mais para calcular, já que inverter uma lista ordenada dá a ordem inversa na hora. A página oferece só uma direção porque é a que toda estatística seguinte quer: a mediana, os quartis e a amplitude são todos definidos a partir da lista crescente, e uma lista decrescente teria de ser invertida antes de qualquer um deles ser lido.
- Por que minha coluna colada da planilha foi recusada?
- Quase certamente por causa dos separadores de milhar. Nesta página a vírgula entre dois algarismos é lida como separador decimal, de modo que 1,5 é um e meio, e a forma 1.500 com ponto é recusada junto com 1,500 e 1.234.567: o ponto no meio dos algarismos não é aceito, então 1500 e 1,5 não podem ser confundidos, e a lista inteira é recusada em vez de adivinhada. A notação com expoente é recusada do mesmo jeito: 1e5, não 100.000. Tire os separadores antes de colar — e note que um grupo separado por espaço, como 1 500, não é recusado: ele entra como dois números, 1 e 500.
Referências
- Sorting — the general problem of putting a collection in order, and why comparison-based sorting is its own field of study — Wolfram MathWorld (United States)
- Ordering — what a total order is, and the properties a comparison has to have before a list can be sorted by it at all — Wolfram MathWorld (United States)
- Real Line — the picture that makes 'least to greatest' mean left to right, including for negative numbers — Wolfram MathWorld (United States)