定義
對於一個包含N個非負整數的數組A[1..n],如果有i < j,且A[ i ]>A[ j ],則稱(A[ i] ,A[ j] )為數組A中的一個逆序對。
例如,數組(3,1,4,5,2)的逆序對有(3,1),(3,2),(4,2),(5,2),共4個。
求解逆序對個數問題
問題描述
給定一個數組,求該數組中包含多少個逆序對。
求解方法
方法一:最原始的方法,利用兩重循環進行枚舉。該算法的時間複雜度為O(n^2)。
C++代碼如下:
Pascal代碼如下:
方法二:利用歸併排序的思想求解逆序對的個數,這是解決該問題的一種較為高效的算法。該算法的時間複雜度為O(nlogn)。
C++代碼如下:
Pascal代碼如下: