Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
GALERA ESTOU COM ALGUMAS DUVIDAS ORDENAÇÃO
Eu tenho um vetor com os seguinte números predefinidos [47,31,29,17,11]
0 1 2 3 4 (posição do vetor)
for(i = 1 ; i < = 4; i++)
{
escolhido = x [ i ]; // aqui vai receber i = 31
j = i - 1; // aqui vai ficar zero blz posição 1 -1 =0
while( j > = 0 && x [ j ] > escolhido) //aqui o bicho pega x[ j ] quanto e ????
{
x [ j + 1 ] = x [ j ];
j = j - i ;
}
x [ j + 1 ] = escolhido
Na verdade cara você escolheu um caminho interessante para a ordenação. O "j" não deve ser menor que x[j] mas sim menor que 4 também.
A lógica é a seguinte, ele vai pegar um número e vai passar por todo o array e verificar se ele é maior ou menor que o próximo número, se ele for o menor número de todo o array então ele será a posição 0, o próximo passo é você descobrir um número que seja maior que o número na posição 0 e menor que qualquer outro número, para isso você vai precisar guardar a ultima posição que você preencheu no array, ou seja, 0
Não sei se você está entendendo tudo, mas a lógica é verificar se o próximo número do array é maior que as ultimas posições preenchidas e menor que as posições que ainda faltam preencher.
Esse é um dos caminhos para se ordenar, o outro caminho é utilizar trocas de variáveis onde você pode armazenar o valor atual, o anterior e o próximo e ir trocando as variáveis para que elas se ordenem.