介绍
康拓展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩,康拓展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。
定义
X=a_n(n-1)!+a_{n-1}(n-2)!+a_{n-2}(n-3)!+···+a_2(1)!+a_1(0!)
其中 a[i]为整数,并且0<=a[i]<i,代表元素arr[i]在还未出现的数字中排第几,简而言之,就是后面与多少个数小于arr[i]
康拓展开是可逆的,若求排列中第x个数的排列,则先将x-1,之后按照公式依次除以(n-i)!