SóProvas


ID
2635180
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2018
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Dada a sequência numérica (15,11,16,18,23,5,10,22,21,12) para ordenar pelo algoritmo Selection Sort, qual é a sequência parcialmente ordenada depois de completada a quinta passagem do algoritmo?

Alternativas
Comentários
  • Questão deve ser anulada pois aplicando o Selection Sort no vetor, temos:

      VETOR:     15,11,16,18,23,5,10,22,21,12
      i=0, VETOR: 5,11,16,18,23,15,10,22,21,12, comparações = 9 (9), trocas = 1 (1)     - 
      i=1, VETOR: 5,10,16,18,23,15,11,22,21,12, comparações = 8 (17), trocas = 1 (2)
      i=2, VETOR: 5,10,11,18,23,15,16,22,21,12, comparações = 7 (24), trocas = 1 (3)
      i=3, VETOR: 5,10,11,12,23,15,16,22,21,18, comparações = 6 (30), trocas = 1 (4)
      i=4, VETOR: 5,10,11,12,15,23,16,22,21,18, comparações = 5 (35), trocas = 1 (5)
      i=5, VETOR: 5,10,11,12,15,16,23,22,21,18, comparações = 4 (39), trocas = 1 (6)
      i=6, VETOR: 5,10,11,12,15,16,18,22,21,23, comparações = 3 (42), trocas = 1 (7)
      i=7, VETOR: 5,10,11,12,15,16,18,21,22,23, comparações = 2 (44), trocas = 1 (8)
      i=8, VETOR: 5,10,11,12,15,16,18,21,22,23, comparações = 1 (45), trocas = 0 (8)

    A resposta deveria ser a sequencia, onde i=4 (5ª iteração), acima: 5,10,11,12,15,23,16,22,21,18.

  • Felipe, pelo que entendi olhando as alternativas, ele parece ter começado do final. O enunciado não diz de onde começa ou se é crescente ou decrescente, mas dá pra sacar isso olhando as alternativas.

    Veja que todas tem 21, 22 e 23 no fim; começando pelo final até a 4ª iteração alterariamos os 4 maiores valores pra o final, que seriam 18, 21, 22 e 23.

    Para o quinto valor seria o 16, que é o mais alto dos restantes, só que aí tem 3 alternativas que cobriam isso (b, d, e); dessa forma pelo que entendi, não teria motivo de mudar o primeiro número já que ele só seria alterado na iteração seguinte, por isso o 15 deveria ficar no começo ainda.

    Dessa forma, o único que tem o 16, 18, 21, 22 e 23 (que estaria correto na quinta iteração), mas mantém um número que não foi ainda selecionado (neste caso o 15), seria a alternativa b)

    Note também que na alternativa e), seria a sexta iteração, com o 15, 16, 18, 21, 22 e 23.

  • Você tem razão Francisco, se rodarmos o algorimo de traz para frente, encontramos a letra B. Conforme a execução abaixo, mas o único algortimo que é feito dessa forma é o BubbleSort. O Selection Sort nunca foi apresentado dessa forma. Mas, de qualquer forma sua informação foi bem útil e pelo jeito eles não vão anular. Vamos que vamos.

      VETOR:     15,11,16,18,23,5,10,22,21,12

     i=0, VETOR: 15,11,16,18,12,5,10,22,21,23, comparações = 9 (9), trocas = 1 (1)     
     i=1, VETOR: 15,11,16,18,12,5,10,21,22,23, comparações = 8 (17), trocas = 1 (2)
     i=2, VETOR: 15,11,16,18,12,5,10,21,22,23, comparações = 7 (24), trocas = 0 (2)
     i=3, VETOR: 15,11,16,10,12,5,18,21,22,23, comparações = 6 (30), trocas = 1 (3)
     i=4, VETOR: 15,11,5,10,12,16,18,21,22,23, comparações = 5 (35), trocas = 1 (4)  --> Quinta Iteração. Sequencia da letra B.
     i=5, VETOR: 12,11,5,10,15,16,18,21,22,23, comparações = 4 (39), trocas = 1 (5)
     i=6, VETOR: 10,11,5,12,15,16,18,21,22,23, comparações = 3 (42), trocas = 1 (6)
     i=7, VETOR: 10,5,11,12,15,16,18,21,22,23, comparações = 2 (44), trocas = 1 (7)
     i=8, VETOR: 5,10,11,12,15,16,18,21,22,23, comparações = 1 (45), trocas = 1 (8)

  • Aí eu não sei; nas aulas que vi não especificava que deveria começar da esquerda ou a ordem deveria ser crescente ou decrescente, apenas usava dessa forma para mostrar como funciona. Pela lógica do selection sort tá rodando certo ali, ele vai pegar o próximo item de onde esteja e jogar para a posição correta.

    No bubblesort ele ia "arrastar" o item comparando com o item ao lado, mas isso não seria possível na iteração 2 para a 3 no que postou, veja que ele já pega o 18 e substitui pelo 10 mesmo eles estando longe, logo não é um bubblesort.

    Se vc aplicar a lógica da busca em qualquer tipo de vetor, vai poder ver que eles podem ser aplicados independente se começou da esquerda pra direita ou da direita pra esquerda e a lógica ainda funcionará.

  • Concordo com o Felipe

  • Achei uma forma fácil de fazer.

    O algoritmo pega o maior e põe no final ( CRESCENTE )

    Põe respectivamente o maior no final: tendo-os 5 últimos = [ 16, 18, 21, 22, 23 ]

    Como são trocados apenas com os outros valores em que estavam os maiores, pode-se ver que

    o valor 15 não muda de posição.

    Assim fica a letra B como resposta.

  • Força Guerreiro!!!!!!