FC ConcursosFC Concursos

Questão FC331197

A execução do código Python a seguir termina com sucesso, mostrando a lista de números dispostos em ordem crescente corretamente. def bubbleSort(numeros): trocas = 0 trocou = True

Linguagens de Programação

FGV · 2018

A execução do código Python a seguir termina com sucesso, mostrando a lista de números dispostos em ordem crescente corretamente.

 

def bubbleSort(numeros):

    trocas = 0

    trocou = True

    while trocou:

         trocou = False

         for i in range(0,len(numeros)-1):

            trocas += 1

            if numeros[i] > numeros[i+1]:

              numeros[i],numeros[i+1] \

                         = numeros[i+1],numeros[i]

              trocou = True

  return trocas

 

numeros = [17, 20, 26, 31, 44, 55, 77, 94, 93]

print bubbleSort(numeros)

print números

 

Assinale a opção que indica o valor exibido pelo primeiro comando print.

  1. 0
  2. 1
  3. 8
  4. 16
  5. 64
Mostrar resposta e comentário

Gabarito

D

Comentário do professor

A função bubbleSort incrementa a variável trocas em cada comparação dentro do for, independentemente de haver ou não uma troca real.

A lista tem 9 elementos, então o loop for percorre índices de 0 a 7, realizando 8 comparações por iteração do laço externo.

Na primeira passada ocorre 1 troca (94 com 93), portanto trocas sobe 8 e trocou fica True, forçando uma segunda passada.

Na segunda passada não há trocas, mas ainda são feitas mais 8 comparações; então trocas soma mais 8 e trocou fica False, encerrando o loop.

Logo, o valor retornado e impresso é \(8 + 8 =\) 16. Nota: o nome trocas é enganador, pois conta comparações, não apenas trocas.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo