A1078 逆序對個數

2021-07-26 08:19:41 字數 537 閱讀 1661

問題描述

在乙個數列(a1, a2, a3, …, an)中,對於1<=iaj,則稱(i,j)是乙個逆序對。

如在數列(3, 1, 5, 2)中,有(1,2), (1,4), (3,4)共3個逆序對。

給定乙個數列,求數列中的逆序對的個數。

輸入格式

輸入的第一行包含乙個正整數n(1<=n<=100),表示數列中的元素個數。

第二行包含n個非負整數,為a1,a2,…,an。數列中的每個元素都不大於10000。

輸出格式

輸出乙個整數,表示數列中有多少個逆序對。

樣例輸入4

3 1 5 2

樣例輸出

3思路:

3 1 5 2 的逆序對是(3 1)(3 2)(5 2),後面的比前面的小,題目的(1,2), (1,4), (3,4)顯示的是下標

**:

#includeint main()

}printf("%d",cont);

return 0;

}

逆序對的個數

對於陣列a 1.n 若有ia j 則對偶 i,j 稱為a的乙個逆序對。求陣列中逆序對個數,很簡單的思路是每個數和後面的數比較,這樣需要 n 2 的時間,如果採用歸併排序的思想最壞情況下需要o nlgn 1.分解a low.mid 和a mid 1.high 2.求解 3.合併,陣列a low.mid...

逆序對的個數

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 100000000 include include include include includeusing names...

分治 求逆序對個數並列印逆序對

如果用最hick的方法去求那麼就是o n 2 的複雜度,如果想優化的話,用歸併排序的方法分治處理。主要思想 總逆序 左邊逆序 右邊逆序 左邊右邊分別排序後的逆序 include includeusing namespace std 用歸併排序的思想來求,歸併排序為o nlogn 的時間複雜度,比暴力...