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>
int comp(const void* a, const void* b){
return *(int*)a - *(int*)b;
}
int main(){
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]);
}
return 0;
}
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main(){
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;
}
return 0;
}
var input = require('fs').readFileSync('/dev/stdin', 'utf8');
var lines = input.split('\n');
const comp = (a, b) => a - b;
let V = 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 in input().strip().split(' ')]
v = V[:]
v.sort()
for i in range(3):
print(v[i])
print()
for i in range(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>
void swap(int* a, int* b){
int aux = *a;
*a = *b;
*b = aux;
}
int main(){
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);
return 0;
}
#include <iostream>
using namespace std;
int main(){
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;
return 0;
}
var input = require('fs').readFileSync('/dev/stdin', 'utf8');
var lines = input.split('\n');
let [A, B, C] = lines.shift().trim().split(' ').map((x) => parseInt(x));
let [a, b, c] = [A, B, C];
if(b < a) [a, b] = [b, a];
if(c < b){
[b, c] = [c, b];
if(b < a) [a, b] = [b, a];
}
console.log(a);
console.log(b);
console.log(c);
console.log();
console.log(A);
console.log(B);
console.log(C);
A, B, C = [int(x) for x in input().strip().split(' ')]
a, b, c = A, B, C
if(b < a):
a, b = b, a
if(c < b):
b, c = c, b
if(b < a):
a, b = b, a
print(a)
print(b)
print(c)
print()
print(A)
print(B)
print(C)