通俗讲康托展开就是在n个数的全排列下求解某个排列序号,比如123456,序号为1。123465序号为2,就是给你一个长度为n的序列你能求出第k字典序大小的排列。
康托展开公式:
X = x1 * (n-1)! + x2 * (n-2)! + …… + xi * (n-i)! + …… + xn-1 * (1)! + xn * 0!
例如:123456,a[1]=1,a[2]=2……,a[6]=6。
xi表示原数第i位后面(从i+1位到n位)有几个比他小得数没有出现。
例:25143
最高位2(a[1])后面只有一个1个数(1)比它小,故x1=1
第二位5(a[2])后面有3个数(1,4,3)比它小,故x2=3
……
第四位4(a[4]),后面有1个数(3)比他小,故x4=1
第五位3(a[5]),后面没有数了,所以x5=0
求出X后,我们如果要求出排名,那么需要X+1
时间复杂度o(2^n)