Ir para conteúdo

POWERED BY:

Arquivado

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

willian2013

seleção direta

Recommended Posts

Olá pessoal, foi me passado o código abaixo do método de seleção direta. Porém, tenho muita dificuldade em trabalhar com índices, vetores, matrizes, parâmetros. Não peguei as "manha" ainda. Segue o código abaixo do método:

 

void selection(int x[], int n)
{
    int inicio = 0; 
    int i, j, menor, pmenor, aux;

    for(j = 0; j < n; j++)
    {
          menor = x[inicio];
          pmenor = inicio;

          for(i = inicio; i<n; i++)
          {
                menor = x[i];
                pmenor = i;
          }
          aux = x[inicio];
          x[inicio] = menor;
          x[pmenor] = aux;
          inicio;
    }
}

 

Minha dúvida já começa logo de cara, esse método recebe dois valores (int x[] int n) de um outro lugar, informado pelo usuário. O "n" creio que seja a informação do tamanho do vetor, e o x[]?? Eu só tenho aquele bloco de código, não tenho o main().

 

A variável "j" controla o índice do vetor. Variável "menor" recebe a posição 0 ou o valor da posição 0? Se esse valor foi passado no main(), supondo que seja 5, então "menor = 5", "pmenor = 5".

 

Depois tem mais um for, o "i" recebe 5 ou 0? Na verdade, a partir daí já não entendo mais nada!! Pode parecer simples para alguém aí, mas não é para mim.

 

Se alguém tiver a bondade e paciência para me ajudar a entender, ficarei grato.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi direito sua dúvida... mas posso estar falando besteira também eu não vi em nenhum lugar inicio mudar de valor... então se ele foi inicializado com 0 ele vai sempre colocar valores no x[0] que está atribuindo valor para a variável menor.

J não está fazendo nada a não ser repetir tudo até chegar no valor de n.

I recebe 0 pois ele está recebendo o valor da variável inicio.

Fora isso não entendi o que essa função deve fazer...

Se puder explicar melhor eu posso tentar ajudar também estou aprendendo c faz pouco tempo(uns 4 meses).

 

Não entendi direito sua dúvida... mas posso estar falando besteira também eu não vi em nenhum lugar inicio mudar de valor... então se ele foi inicializado com 0 ele vai sempre colocar valores no x[0] que está atribuindo valor para a variável menor.

J não está fazendo nada a não ser repetir tudo até chegar no valor de n.

I recebe 0 pois ele está recebendo o valor da variável inicio, e depois vai repetir até chegar ao valor de n.

Fora isso não entendi o que essa função deve fazer...

Se puder explicar melhor eu posso tentar ajudar também estou aprendendo c faz pouco tempo(uns 4 meses).

Compartilhar este post


Link para o post
Compartilhar em outros sites

O

x[]

quer dizer que a função espera um array de inteiros.

 

O que você pode fazer quando não entender um algoritmo é executá-lo passo a passo usando papel e lápis:

 

 

 

x = [1,2,3,4]

 

inicio=0, j=0, menor=1, pmenor=0

i=0, menor=1, pmenor=0

i=1, menor=2, pmenor=1

i=2, menor=3, pmenor=2

i=3, menor=4, pmenor=3

aux=1

x[0] = 4

x[3] = 1

 

Após a primeira iteração em j: x = [4,2,3,1]

 

P/ mim parece que essa função queria realizar a ordenação decrescente de arrays usando o método de ordenação por seleção (selection sort), mas está um tanto confuso. Dê uma olhada na wikipedia p/ ver o código de exemplo que tem lá.

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.