Voglio solo dire che è il tempo O (n) e la complessità spaziale è O (n!), ma non ne sono certo. Qualcuno può confermarlo o dirmi di cosa si tratta?
Nota: non ho effettivamente preso in considerazione il codice in questione, quindi suppongo che questo non sia abbastanza sicuro; questo, tuttavia, riflette come implementerei questo.
L'iterabile fa una copia dell'input e lo ordina. Quindi genera permutazioni come vengono richieste - cioè, non genera tutte le permutazioni, le memorizza, quindi itera su una raccolta. Piuttosto, genera ogni permutazione al volo, come è richiesto.
Come tale, hai praticamente le complessità all'indietro. In qualsiasi momento, c'è solo una copia dell'input, quindi la complessità dello spazio è O (N). Puoi scorrere su N! permutazioni, quindi la complessità temporale per completare l'iterazione è O (N!).
Leggi altre domande sui tag algorithm-analysis