-
Total de itens
2 -
Registro em
-
Última visita
Posts postados por Gabriel_TF141
-
-
Este é um problema bastante conhecido, existem diversas formas de se ordernar um vetor. Como você ainda está começando na programação vou lhe dizer a maneira simples. Além disso a resolução a seguir independe da quantidade de inteiros no vetor. Vamos lá!
A ideia deste algoritimo é a seguinte, dado um vetor v[0..n-1] com n numeros, eu vou analisar o subtrecho v[0..i], colocar em m o maior valor e depois colocar o valor m não ultima posicao, veja que quem faz isso é o segundo laco mais interno, então no primeiro loop do for mais externo o ultimo valor estara na posicao correta, no segundo loop o ultimo e o penultimo estaram na posicao correta e assim sucessivamente até que todo o vetor esteja ordenado.
/*Ordenação do vetor:*/
/*Esse laço mais externo ira controlar o subtrecho a ser ordenado.*/for
(i = n-1; i > 0; i--){
m = 0;
// Este laço vai decidir em qual posicao do subtrecho [0...i] esta o maior valor
for
(j = 1; j <= i; j++){
if
(vet[j] > vet[m])
m = j;
}
// Apos decidico qual a posicao m tem o maior valor é hora de substituir o ultimo valor do subtrecho pelo valor contido na posicao m
tmp = vet;
vet = vet[m];
vet[m] = tmp;
}
É fácil ver que se você quiser em ordem decrescente basta troca o '>' por '<'. Outra coisa, essa mais "hardcore" kk, é que no pior que caso esse tipo de ordenacao é da ordem de n*n, o que pra n muito grande vai explodir, por isso existem algoritimos de ordenacao muito mais eficientes como o mergesort, quicksort e outros.
Algoritimos e programação
em Lógica de Programação
Postado
Problema 1)
Agora usa o programa um como base pra fazer o resto.