Ir para conteúdo
Fórum Script Brasil

Gabriel_TF141

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Posts postados por Gabriel_TF141

  1. 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.

×
×
  • Criar Novo...