51Nod1019 歸併排序(遞迴)

2021-08-20 15:28:56 字數 690 閱讀 1181

第一步:申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合併後的序列

第二步:設定兩個指標,最初位置分別為兩個已經排序序列的起始位置

重複步驟3直到某一指標超出序列尾

將另一串行剩下的所有元素直接複製到合併序列尾

歸併操作(merge),也叫歸併演算法,指的是將兩個順序序列合併成乙個順序序列的方法。

如 設有數列

初始狀態:6,202,100,301,38,8,1

第一次歸併後:,,,,比較次數:3;

第二次歸併後:,,比較次數:4;

第三次歸併後:,比較次數:4;

總的比較次數為:3+4+4=11;

逆序數為14;

具體**如下:

本題資料較大  應該用longlong

#include#include#include#includeusing namespace std;  

#define inf 2000000000

const int max=100000;

typedef long long ll;

ll l[max/2],r[max/2];

ll n,ans=0;

ll a[max];

void merge(ll a,int left,int mid,int right)

歸併排序 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是逆序,逆序數...

51Nod 1019 逆序數 歸併排序

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