Podemos simplesmente colocar estes valores em um vetor e ordená-los usando o método naturalmente de ordenação ou usando um dos métodos apresentados na página Ordenação.
Seja qual for a solução, lembre-se de guardar a ordem original da entrada em outras variáveis.
Alternativa 1 - Transformando em vetor e ordenando com sort()
Esta abordagem é mais simples, só usa um pouquinho mais de memória, mas bem pouquinho mesmo.
#include<stdlib.h>#include<stdio.h>intcomp(constvoid* a,constvoid* b){return*(int*)a -*(int*)b;}intmain(){int v[3], V[3];for(int i =0; i <3; ++i){scanf("%d",&V[i]); v[i] = V[i]; }qsort(v,3,sizeof(int), comp);for(int i =0; i <3; ++i){printf("%d\n", v[i]); }printf("\n");for(int i =0; i <3; ++i){printf("%d\n", V[i]); }return0;}
#include<algorithm>#include<iostream>#include<vector>usingnamespace std;intmain(){ vector<int> v, V;V.assign(3,0); v.assign(3,0);for(int i =0; i <3; ++i){ cin >>V[i];v[i] =V[i]; }sort(v.begin(),v.end());for(int i =0; i <3; ++i){ cout <<v[i] << endl; } cout << endl;for(int i =0; i <3; ++i){ cout <<V[i] << endl; }return0;}
var input =require('fs').readFileSync('/dev/stdin','utf8');var lines =input.split('\n');constcomp= (a, b) => a - b;letV=lines.shift().trim().split(' ').map((x) =>parseInt(x));let v = [...V];v.sort(comp);for(let i =0; i <3; ++i){console.log(v[i]);}console.log();for(let i =0; i <3; ++i){console.log(V[i]);}
V = [int(x)for x ininput().strip().split(' ')]v = V[:]v.sort()for i inrange(3):print(v[i])print()for i inrange(3):print(V[i])
Alternativa 2 - Usando InsertionSort
Um método eficiente e fácil de implementar que podemos usar é o InsertionSort, onde podemos proceder da seguinte maneira:
Verificar se o segundo elemento é menor que o primeiro. Se for, trocar as posições de ambos.
Verificar se o terceiro elemento é menor que o segundo. Se for, trocar as posições de ambos.
Se no passo anterior, se os elementos foram trocados, então verificar novamente se o agora segundo elemento é menor que o primeiro e se for, trocar as posições de ambos.
#include<stdio.h>voidswap(int* a,int* b){int aux =*a;*a =*b;*b = aux;}intmain(){int a, b, c, A, B, C;scanf("%d%d%d",&A,&B,&C); a = A, b = B, c = C;if(b < a) swap(&a,&b);if(c < b){swap(&b,&c);if(b < a) swap(&a,&b); }printf("%d\n%d\n%d\n\n%d\n%d\n%d\n", a, b, c, A, B, C);return0;}
#include<iostream>usingnamespace std;intmain(){int a, b, c, A, B, C; cin >> A >> B >> C; a = A, b = B, c = C;if(b < a) swap(a, b);if(c < b){swap(b, c);if(b < a) swap(a, b); } cout << a << endl << b << endl << c << endl; cout << endl; cout << A << endl << B << endl << C << endl;return0;}
A, B, C = [int(x)for x ininput().strip().split(' ')]a, b, c = A, B, Cif(b < a): a, b = b, aif(c < b): b, c = c, bif(b < a): a, b = b, aprint(a)print(b)print(c)print()print(A)print(B)print(C)