N
自然數
排列P = [a1, a2, ... , aN]
可以通過inversionsI = [i1, i2, ... , iN]
的列表,其中iK
告訴我們有多少是數字大於K
可以在置換P
K
之前發現來表示。轉換置換中的反轉表示
示例:如果P = [3, 1, 4, 2]
,然後I = [1, 2, 0, 0]
(放置3,1,3和4放置在2之前,而3和4之前沒有任何更大的數字)。
有一個顯而易見的算法,可以將標準的排列轉換爲反轉形式,並在O(N^2)
(我們只是按照定義和計數)運行。對於逆轉換(這稍微不那麼簡單)也是如此。
是否有算法具有較低的時間複雜度?
我認爲有可能使用Fenwick樹或類似的數據結構。 – kfx