1.分治思想,歸併排序思想
//過程:先把陣列分割成子陣列,先統計出子陣列內部的逆序對的數目,然後再統計出兩個相鄰子陣列之間的逆序對的數目。在統計逆序對的過程中,還需要對陣列進行排序。如果對排序演算法很熟悉,我們不難發現這個過程實際上就是歸併排序
function inversepairs(data =)
let mid = math.floor((end - start) / 2)
let left = inversepairshelp(copy, data, start, start +mid)
let right = inversepairshelp(copy, data, start + mid + 1, end)
let i = start +mid
let j =end
let count = 0let indexcopy =end
while (i >= start && j >= start + mid + 1)
else
}for (; i >= start; i--)
copy[indexcopy--] =data[i]
for (; j >= start + mid + 1; j--)
copy[indexcopy--] =data[j]
return left + right +count
}}
逆序對的個數
對於陣列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...
逆序對的個數
在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 100000000 include include include include includeusing names...
LeetCode 統計陣列中逆序對的個數
題目描述 在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對.輸入乙個陣列,求出這個陣列中 的逆序對的總數p.並將p對1000000007取模的結果輸出.即輸出p 1000000007.note 2 n 50000 example 1 input nums 9,6,8,5...