forked from kelvins/algorithms-and-data-structures
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gnome_sort.py
34 lines (26 loc) · 955 Bytes
/
gnome_sort.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
"""
Implementação do Gnome Sort ou Stupid Sort
"""
def gnomesort(lista):
i = 0
while i < len(lista):
# caso a posição de i for 0 ou se o valor de i for maior ou igual
# ao seu anterior, o gnomo apenas avançará uma casa
if i == 0 or lista[i] >= lista[i - 1]:
i += 1
# caso o conteúdo da posição i seja menor ou igual a do seu anterior,
# o gnomo trocará os valores de lugar e voltará uma posição
# para validar a ordem
else:
lista[i], lista[i - 1] = lista[i - 1], lista[i]
i -= 1
return lista
def main():
lista = [-1, 1, 0, -7, 7, -5, 5, 2, -2, 4, -4, 9, -9, -6, 6, -8, 8, -3, 3]
# imprime a lista não ordenada
print(f"Lista antes de ser ordenada: {lista}")
lista = gnomesort(lista)
# imprime a lista ordenada
print(f"Lista após ordenação com Gnome Sort: {lista}")
if __name__ == "__main__":
main()