자바·파이썬·자바스크립트/파이썬 프로그래밍

get_next (next_permutation)

바로이순간 2014. 7. 22. 16:30


http://nicolas-lara.blogspot.kr/2009/01/permutations.html


the Dijkstra algorithm for generating the next permutation. 


def get_next(a):  

    n=len(a)  

    i=n-1  

  

    while a[i-1]>=a[i]:  

        i-=1  

  

    j=n  

  

    while a[j-1]<=a[i-1]:  

        j-=1  

  

    a[i-1],a[j-1]=a[j-1],a[i-1]  

  

    i+=1  

    j=n  

  

    while i < j:  

        a[i-1],a[j-1]=a[j-1],a[i-1]  

        i+=1  

        j-=1  

  

    return a