From b0cb213f2f9c20b7a68ae2110ecd020c39215d8d Mon Sep 17 00:00:00 2001 From: zhang Date: Tue, 24 Mar 2020 23:25:29 +0800 Subject: =?UTF-8?q?=E5=AD=97=E5=85=B8=E5=BA=8F=E6=8E=92=E5=88=97=E7=9A=84?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- algo/lexicographic_order.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 algo/lexicographic_order.py (limited to 'algo') diff --git a/algo/lexicographic_order.py b/algo/lexicographic_order.py new file mode 100644 index 0000000..f2a6631 --- /dev/null +++ b/algo/lexicographic_order.py @@ -0,0 +1,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']) -- cgit v1.2.3