diff options
| author | zhang <zch921005@126.com> | 2020-03-24 23:25:29 +0800 |
|---|---|---|
| committer | zhang <zch921005@126.com> | 2020-03-24 23:25:29 +0800 |
| commit | b0cb213f2f9c20b7a68ae2110ecd020c39215d8d (patch) | |
| tree | 2effee8a502d27d4a629b5965cdc79d343160618 | |
| parent | 269331ac08fb6d26be0c51445e4274f58850012d (diff) | |
字典序排列的实现
| -rw-r--r-- | algo/lexicographic_order.py | 29 |
1 files changed, 29 insertions, 0 deletions
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']) |
