陣列元素的逆序數

2021-09-08 16:54:08 字數 728 閱讀 1438

求乙個n個元素的逆序數

例如:的逆序數為:0+2+0+1+0=3

最直接的求解逆序數方法時間複雜度為o(n^2)

如果用分治的策略可以將時間複雜度降為o(n*logn),求n個元素的逆序數的分治思想如下:首先求前n/2個元素的逆序數,再求後n/2個

元素的逆序數,最後在排序過程中合併前後兩部分之間的逆序數

實現**如下:

#includeusing namespace std;

int invalid_input=false;

int cal_reverse(int *data,int len,int start,int end);

int merge_reverse(int *data,int len,int start,int mid,int end);

int main()

if(start==end)

return 0;

else }

int merge_reverse(int *data,int len,int start,int mid,int end)

else

}while(i<=mid)

while(j<=end)

for(i=start;i<=end;i++)

data[i]=temp[i];

delete temp;

return count;

}

求陣列的逆序數

題目 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。現在,給你乙個n個元素的序列,請你判斷出它的逆序數是多少。比如 1 3 2 的逆序數就是1。方法1 o n 2 這個就不說了。方法2 借助歸併排序達到o...

陣列中的逆序數

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007 解題思路 先把陣列分割成子陣列,先統計出子陣列內部的逆序對的數目,然後再統計出兩個相鄰子陣列之間的...

樹狀陣列求逆序對(逆序數)

逆序數 也叫逆序對 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。無重複的數 include include include include include include using namespace...