9位康托展开代码:
1 |
|
康托展开从一个不重复序列中得到某个排列在全排列中的字典序。
以9位(01235678)为例:
| State | 012345678 | 012345687 | 012345768 | … | 876543210 |
|---|---|---|---|---|---|
| Cantor Value | 0 | 1 | 2 | … | 362880 |
原理:
从第一位开始,寻找往后序列中比第一位小的数,将其放在首位,剩下的数全排列
固定第一位,寻找往后序列比第二位小的数,将其放在第二位,剩下的数全排列
往后按此规律即可,直到遍历到最后一位
则返回值:
1 |
|
以9位(01235678)为例:
| State | 012345678 | 012345687 | 012345768 | … | 876543210 |
|---|---|---|---|---|---|
| Cantor Value | 0 | 1 | 2 | … | 362880 |
从第一位开始,寻找往后序列中比第一位小的数,将其放在首位,剩下的数全排列
固定第一位,寻找往后序列比第二位小的数,将其放在第二位,剩下的数全排列
往后按此规律即可,直到遍历到最后一位
则返回值:
Author: Endsieg77
Link: https://endsieg77.github.io/2021/01/08/Cantor-Expansion/
Post on: January 8th 2021, 10:21:57 pm
Update on: January 8th 2021, 10:23:28 pm