Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pulse

Ordenação por inserção

Recommended Posts

Sei que existem alguns algoritmos desse tipo prontos por ai mas estou tentando fazer um sozinho, não consigo encontrar no que estou errando.

int main ()
{
    int v[] = {4, 3, 2, 1, 0, 8, 9, 10}, i, n=8, aux, k;


    for(i=0; i<n-1; i++)
    {
        for(k=i; k>=0; k--)
        {
            if(v[k] > v[k+1]);
            {
                aux = v[k];
                v[k] = v[k+1];
                v[k+1] = aux;
            }
        }
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na parte do código onde você faz a troca dos elementos:

if(v[k] > v[k+1]);
{
  aux = v[k];
  v[k] = v[k+1];
  v[k+1] = aux;
}
Repare que há um ponto e vírgula( ; ) no final da primeira linha, na condição de troca. Ele faz com que o compilador interprete seu código da seguinte maneira:

if(v[k] > v[k+1])
{
  // nada para ser feito
}

// sempre vai ser executado
aux = v[k];
v[k] = v[k+1];
v[k+1] = aux;
Remova o ponto e vírgula e teste seu código novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.