反推:
从后往前看 , 编码后『0,0,0,3,1,2』
Z后一个2表示 原数组前5位有两个比Z后一位的数字小,又因为原数组是1到6的数字不重复,所以Z后一位等于2。
再看倒数第二位1,说明原数组前4位有1个比倒数第二位小,只能是0比1小,所以倒数第2位为1
。。。。。
算法就可以出来了
定义一个标志数组
伪码:
bool flag[n] = {false}; //表示数字是否被使用过了
for(int i = n-1 ; i >= 0 ; i--)
{
~~~~从flag中找到还未使用的第A1[i]个数字,他在flag中的序号就是A[i]
}