排列的逆序數

2021-10-05 14:56:04 字數 882 閱讀 1410

在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。也就是說,對於n個不同的元素,先規定各元素之間有乙個標準次序(例如n個 不同的自然數,可規定從小到大為標準次序),於是在這n個元素的任一排列中,當某兩個元素的實際先後次序與標準次序不同時,就說有1個逆序。乙個排列中所有逆序總數叫做這個排列的逆序數。

逆序數為偶數的排列稱為偶排列;逆序數為奇數的排列稱為奇排列。如2431中,21,43,41,31是逆序,逆序數是4,為偶排列。

例如序列: 3, 4, 5, 2, 1

規定公升序為標準次序

則逆序對為32, 31, 42, 41, 21

所以逆序數為5,排列為奇排列

最簡單的是直接計數法,簡單直觀,時間複雜度為氣泡排序也可以用來求逆序數,統計swap的交換次數即可。氣泡排序演算法迴圈中的swap交換次數即是逆序數,每次交換一次,逆序數就減一,當逆序數減為零時,整個序列就有序了,但是時間複雜度也是那有更快的方法求逆序數嗎?答案是肯定的,那就是使用歸併排序來求逆序數。

int reversenumbers(vector&v, int l, int r)

else

}while (i <= mid)

while (j <= r)

for (int i = l, j = 0; i <= r; ++i, ++j) v[i] = tmp[j];

return res;

}

求排列的逆序數

考慮1,2,n n 100000 的排列i1,i2,in,如果其中存在j,k,滿足 j k 且 ij ik,那麼就稱 ij,ik 是這個排列的乙個逆序。乙個排列含有逆序的個數稱為這個排列的逆序數。例如排列 263451 含有8個逆序 2,1 6,3 6,4 6,5 6,1 3,1 4,1 5,1 因...

求排列的逆序數

openjudge011 題目 乙個排列含有逆序的個數稱為這個排列的逆序數。例如排列 263451 含有8個逆序 2,1 6,3 6,4 6,5 6,1 3,1 4,1 5,1 因此該排列的逆序數就是8。顯然,由1,2,n 構成的所有n 個排列中,最小的逆序數是0,對應的排列就是1,2,n 最大的逆...

求排列的逆序數

求排列的逆序數 標題 1020 求排列的逆序數 檢視提交統計提問 總時間限制 1000ms 記憶體限制 65536kb 描述在internet上的搜尋引擎經常需要對資訊進行比較,比如可以通過某個人對一些事物的排名來估計他 或她 對各種不同資訊的興趣,從而實現個性化的服務。對於不同的排名結果可以用逆序...