求逆序對數
題目內容:對於乙個長度為n的整數序列a,滿足i < j 且 ai > aj.的數對(i,j)稱為整數序列a的乙個逆序
請求出整數序列a的所有逆序對個數
輸入格式:
輸入包含多組測試資料,每組測試資料有兩行
第一行為整數n(1 <= n <= 20000),當輸入0時結束
第二行為n個整數,表示長為n的整數序列
輸出格式:
每組資料對應一行,輸出逆序對的個數
輸入樣例:
51 2 3 4 5
55 4 3 2 111
0輸出樣例:010
0
#include #include #include #include #include using namespace std;
int main()
; for (int i = 0; i < m; i++)
int count = 0;
for (int i = 1; i < m; i++)
}} cout << count << endl;
cin >> m;
} return 0;
}
演算法1 求逆序對數與顯著逆序對數(歸併排序)
求逆序對數問題是歸併排序的基礎問題,顯著逆序對數則是逆序對數的公升級版。poj2299,poj1804均是此類問題 但是個別細節不同,例如poj2299需要將逆序對數變數num設為long long int型 一 求逆序對數 描述 對於乙個長度為n的整數序列a,滿足i j 且 ai aj的數對 i,...
歸併排序求逆序對數
參考部落格 歸併排序求逆序對數 include include include includeusing namespace std 歸併排序是借助乙個輔助陣列來進行排序 int ans 0 void merge sort int a,int l,int r,int t a是原陣列,t是輔助陣列 i...
歸併排序求解逆序對數
定義 逆序對就是對於ia j 這樣的數對在序列中的個數。求解方法 歸併排序是採用分治的思想劃分數列,然後將兩路有序的數列合併。通過劃分和合併的遞迴呼叫來完成排序。在合併的過程中,兩個數列中的元素的相對位置不會發生改變 這裡只是前後關係 而且如果後乙個數列b中某個元素b在需要先放入 優先於前乙個數列a...