歸併排序求逆序對數

2021-07-10 16:36:20 字數 445 閱讀 8838

參考部落格:歸併排序求逆序對數

#include#include#include#includeusing namespace std;

//歸併排序是借助乙個輔助陣列來進行排序

int ans = 0;

void merge_sort(int *a, int l, int r, int *t) {//a是原陣列,t是輔助陣列

if(r-l>1){

int mid = (l+r)/2;

merge_sort(a, l, mid, t);

merge_sort(a, mid, r, t);

int p = l , q = mid;

int i = l;

while(p < mid || q < r) {

//右邊空了或左邊還有數並且左邊接下來的第乙個數小

if(q >= r || (p

求逆序對數總結 歸併排序

用歸併排序方式 最原始的方法的複雜度是o n 2 使用歸併排序的方式,可以把複雜度降低到o nlgn 設a 1.n 是乙個包含n個非負整數的陣列。如果在i j的情況下,有a a j 則 i,j 就稱為a中的乙個逆序對。例如,陣列 3,1,4,5,2 的 逆序對 有 3,1 3,2 4,2 5,2 共...

歸併排序及利用歸併排序求逆序對數

include include include include include using namespace std 用歸併排序順便完成統計逆序對數。因為合併操作是從小到大進行的,當右邊的a q 複製到t中時,左邊還沒來得及複製到t中的那些數就是左邊所有比a q 大的數。此時在累加器中加上左邊的元...

演算法1 求逆序對數與顯著逆序對數(歸併排序)

求逆序對數問題是歸併排序的基礎問題,顯著逆序對數則是逆序對數的公升級版。poj2299,poj1804均是此類問題 但是個別細節不同,例如poj2299需要將逆序對數變數num設為long long int型 一 求逆序對數 描述 對於乙個長度為n的整數序列a,滿足i j 且 ai aj的數對 i,...