"""
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()