summaryrefslogtreecommitdiff
path: root/algo/lexicographic_order.py
blob: f2a66312e4025e8a7b600147c0294a5f39c1e926 (plain)
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



def lexicoal_permute(seq):

    n = len(seq)
    max_x = -1
    seq.sort()
    print(seq)
    while True:
        for i in range(n-1):
            if seq[i] < seq[i+1]:
                max_x = i
        if max_x == -1:
            break
        max_y = -1
        for i in range(n):
            if seq[i] > seq[max_x]:
                max_y = i
        # swap
        seq[max_x], seq[max_y] = seq[max_y], seq[max_x]
        # reverse
        seq[max_x+1:] = seq[n-1:max_x:-1]
        max_x = -1
        print(seq)


if __name__ == '__main__':
    lexicoal_permute(['a', 'c', 'b'])