1042 - Sort Simples
Você pode usar a função sort() ou algum dos métodos de ordenação apresentados aqui neste solucionário.
Descrição
Solução
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.
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;
}
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;
}
Last updated
Was this helpful?