MC102 - Algoritmos e Programação de Computadores
MC102 HorĂ¡rios Plano de
desenvolvimento
Cronograma Oferecimentos
anteriores

Bubble Sort

Nesta tarefa, analisaremos detalhadamente as trocas executadas pelo algoritmo de ordenação Bubble Sort. Para nosso estudo, utilizaremos um visualizador para listas de inteiros contruído a partir de barras feitas com caracteres | de altura proporcional ao valor dos inteiros representados. Veja, como exemplo, o visualizador para uma lista com os inteiros [3, 1, 12, 4, 10, 7, 2, 11, 9, 8, 5, 6], adornado com uma moldura feita com pontos.

..............
.  |         .
.  |    |    .
.  | |  |    .
.  | |  ||   .
.  | |  |||  .
.  | || |||  .
.  | || ||| |.
.  | || |||||.
.  |||| |||||.
.| |||| |||||.
.| ||||||||||.
.||||||||||||.
..............

A ideia básica do Bubble Sort baseia-se em comparar elementos adjacentes da lista e, se estiverem fora de ordem, trocá-los. Ao final da primeira passada na lista, o elemento de maior valor estará posicionado corretamente na última posição, ao final da segunda passada o segundo maior valor na penúltima posição e assim sucessivamente. Abaixo, ilustramos o comportamento do algoritmo com a lista [4, 3, 2, 1].

......
.|   .
.||  .
.||| .
.||||.
......
......
. |  .
.||  .
.||| .
.||||.
......
......
.  | .
.| | .
.||| .
.||||.
......
......
.   |.
.|  |.
.|| |.
.||||.
......
......
.   |.
. | |.
.|| |.
.||||.
......
......
.   |.
.  ||.
.| ||.
.||||.
......
......
.   |.
.  ||.
. |||.
.||||.
......

O algoritmo Bubble Sort é simples de entender, mas não é muito eficiente... Para mais informações sobre algoritmos de ordenação em Python consulte runstone.academy --- sorting.

Descrição da entrada

A entrada conterá uma única linha com uma lista de inteiros com valores entre 1 e 9.

Descrição da saída

A saída conterá um quadro com o estado inicial da lista e um quadro ilustrando cada uma das trocas executadas pelo algoritmo. O último quadro deve conter a lista ordenada. Se a lista já estiver ordenada na entrada, apenas o quadro inicial deverá ser mostrado. Em caso de dúvidas, consulte os arquivos com as respostas dos testes.

Testes para o SuSy

Esta tarefa contém 7 testes abertos e 3 testes fechados. Veja na tabela abaixo os quatro primeiros testes e seus respectivos resultados. Consulte os outros testes e resultados no link Testes para a tarefa 12 de mc102 ou no arquivo aux12.zip

arq01.in arq02.in arq03.in arq04.in
1 2 3 4 5
1 2 3 5 4
2 1 3 3 5 4
1 2 1 3 2 4 5 4
.......
.    |.
.   ||.
.  |||.
. ||||.
.|||||.
.......
.......
.   | .
.   ||.
.  |||.
. ||||.
.|||||.
.......
.......
.    |.
.   ||.
.  |||.
. ||||.
.|||||.
.......
........
.    | .
.    ||.
.  ||||.
.| ||||.
.||||||.
........
........
.    | .
.    ||.
.  ||||.
. |||||.
.||||||.
........
........
.     |.
.    ||.
.  ||||.
. |||||.
.||||||.
........
..........
.      | .
.     |||.
.   | |||.
. | |||||.
.||||||||.
..........
..........
.      | .
.     |||.
.   | |||.
.  ||||||.
.||||||||.
..........
..........
.      | .
.     |||.
.    ||||.
.  ||||||.
.||||||||.
..........
..........
.       |.
.     |||.
.    ||||.
.  ||||||.
.||||||||.
..........
arq01.res arq02.res arq03.res arq04.res

Orientações para submissão

Veja aqui a página de submissão da tarefa. O arquivo a ser submetido deve se chamar lab12.py. No link Arquivos auxiliares há um arquivo aux12.zip que contém todos os arquivos de testes abertos e seus respectivos resultados compactados.

O limite máximo será de 30 submissões. Serão considerados os resultados da última submissão.

O peso desta tarefa é 2.

O prazo final para submissão é 12/07/2020.

A nota desta tarefa é proporcional ao número de testes que executaram corretamente, desde que o código esteja coerente com o enunciado. A submissão de um código que não implementa o algoritmo requisitado, mas que exibe as saídas esperadas dos testes abertos a partir da comparação de trechos da entrada será considerada fraude e acarretará a atribuição de nota zero à média final da disciplina.