計算陣列的逆序對個數
如果按照公升序為準,如果陣列已經按照公升序排列,則逆序對個數為0;若陣列是降序排列的,則逆序對個數最多。
可以使用歸併排序解決
public void sort(int n,int start,int end,int t)
} static void merge(int n,int start,int mid,int end,int t) else
} //將左邊剩餘數加到臨時陣列
while(i <= mid)
//將右邊剩餘數加到臨時陣列
while(j <= end)
//將臨時陣列的內容覆蓋原來陣列的內容
for(int m=0; m} //測試案例
public static void main(string args);
int t = new int[1];
sort(d,0,5,t);
}
樹狀陣列 求逆序對個數
樹狀陣列求逆序對其實挺簡單的 1.將要求的陣列離散化 離散化將每乙個數的值變為該數在陣列中的大小 inline bool cmp int x,int y for int i 1 i n i a i read p i i sort p 1,p n 1 cmp for int i 1 i n i a p...
36 陣列中逆序對的個數
題目描述 在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p.思路 本質是歸併排序,在比較時加入全域性變數 count 進行記錄逆序對的個數,若 data start data index 則 count 值為 mid 1 s...
逆序對的個數
對於陣列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...