nums.py
· 1.6 KiB · Python
Raw
# nums é a lista que não é organizada
def ordenar(nums):
# lista é a lista organizada
lista = []
# a gnt vai executar esse bloco para cada item na lista
# (precisa desse 'range len' pq a gnt vai modificar a lista)
for _ in range(len(nums)):
# a gnt tira um valor no canto da lista
# n importa qual valor a gnt pegou, mas sim q a gnt retirou ele da lista
atual = nums.pop()
# caso seja o primeiro valor da lista ele n tem como estar desorganizado
if len(lista) == 0:
lista.append(atual)
else:
# a gnt sabe q c n tiver nhm espaço p/ um item
# (ou seja, n vai ter um item maior na lista para ele ficar ao lado)
# ele vai ficar no final da lista
posição_atual = len(lista)
# a gnt vai passar por cada *posição* na lista
for posição in range(len(lista)):
# e comparar o valor dessa posição com o valor atual
if lista[posição] > atual:
# caso o nosso valor tenha passado do valor da
# posição a gnt sabe q é para ele aparecer logo antes
# ent a gnt fala q a posição que o item precisa ser inserido é a atual
# (isso vai 'mover' o valor atual (e tds os próximos) p/ direita)
posição_atual = posição
# n precisa mais procurar o lugar correto na lista, pq já foi encontrado
break
# a gnt vai adicionaro o valor atual no posição encontrada
lista.insert(posição_atual, atual)
return lista
| 1 | # nums é a lista que não é organizada |
| 2 | def ordenar(nums): |
| 3 | # lista é a lista organizada |
| 4 | lista = [] |
| 5 | # a gnt vai executar esse bloco para cada item na lista |
| 6 | # (precisa desse 'range len' pq a gnt vai modificar a lista) |
| 7 | for _ in range(len(nums)): |
| 8 | # a gnt tira um valor no canto da lista |
| 9 | # n importa qual valor a gnt pegou, mas sim q a gnt retirou ele da lista |
| 10 | atual = nums.pop() |
| 11 | |
| 12 | # caso seja o primeiro valor da lista ele n tem como estar desorganizado |
| 13 | if len(lista) == 0: |
| 14 | lista.append(atual) |
| 15 | else: |
| 16 | # a gnt sabe q c n tiver nhm espaço p/ um item |
| 17 | # (ou seja, n vai ter um item maior na lista para ele ficar ao lado) |
| 18 | # ele vai ficar no final da lista |
| 19 | posição_atual = len(lista) |
| 20 | |
| 21 | # a gnt vai passar por cada *posição* na lista |
| 22 | for posição in range(len(lista)): |
| 23 | # e comparar o valor dessa posição com o valor atual |
| 24 | if lista[posição] > atual: |
| 25 | # caso o nosso valor tenha passado do valor da |
| 26 | # posição a gnt sabe q é para ele aparecer logo antes |
| 27 | # ent a gnt fala q a posição que o item precisa ser inserido é a atual |
| 28 | # (isso vai 'mover' o valor atual (e tds os próximos) p/ direita) |
| 29 | posição_atual = posição |
| 30 | # n precisa mais procurar o lugar correto na lista, pq já foi encontrado |
| 31 | break |
| 32 | # a gnt vai adicionaro o valor atual no posição encontrada |
| 33 | lista.insert(posição_atual, atual) |
| 34 | return lista |