# 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