51Nod 1019 逆序數 歸併排序

2021-08-21 21:23:53 字數 904 閱讀 2726

1019 逆序數

基準時間限制:1 秒 空間限制:131072 kb 分值: 0 難度:基礎題

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

如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序數是4。給出乙個整數序列,求該序列的逆序數。

input

第1行:n,n為序列的長度(n <= 50000)

第2 - n + 1行:序列中的元素(0 <= a[i] <= 10^9)

output

輸出逆序數
input示例

424

31

output示例

4
逆序數對的歸併思路:

這道題用氣泡排序也可以處理,不過因為是n²的演算法,對於大資料而言肯定會爆,哎呀,優化版的冒泡也過不了

所以用歸併排序的思路,其實也和冒泡的思路一樣,只不過歸併交換次數,用了另乙個來替代,即

當左右兩邊都有序後,逆序數對其實就是右邊 j 位置插入時,左邊的陣列還剩下多少個未插入,這個就是對於其的逆序數

#includeusing namespace std;

const int n = 50010;

int a[n],b[n];

int sum = 0, n;

void mergearray(int left, int right)

}void mergesort(int left, int right)

}int main()

mergesort(0, n - 1);

printf("%d\n", sum);

return 0;

}

歸併排序 51nod 1019 逆序數

後面的總結可能有錯誤的地方 發現請指出 畢竟 也是從別人呢裡搬的有 也有自己的總結!1019 逆序數 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱...

逆序數(51Nod1019) 歸併排序

1019 逆序數 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序數...

51 nod 1019 逆序數(歸併排序)

1019 逆序數 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 收藏 關注 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。如2 4 3 1中,2 1,4 3,4 1,3 1是...