owsei revised this gist . Go to revision
1 file changed, 34 insertions
nums.py(file created)
@@ -0,0 +1,34 @@ | |||
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 |
Newer
Older