查詢逆序對

2022-05-31 18:51:14 字數 996 閱讀 8074

問題:

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。 即輸出p%1000000007

分析:(1)使用蠻力法進行窮舉:很遺憾,時間上只能通過50%;

(2)歸併排序+插入排序:很遺憾,時間上只能通過75%

code1:窮舉

public

int inversepairs(int

array)

//暴力破解:時間複雜度不滿足

long count = 0

;

for (int i = 1; i < array.length; i++) }}

int result = (int) count % 1000000007

; }

code2:歸併+插入

1

public

int inversepairs(int

array) 5//

借鑑別人的思想,使用歸併排序

6long res = mergesort(array, 0, array.length - 1);7

system.out.println(res);

9return (int) (res % 1000000007

);10}11

//改進的歸併排序

12public

long mergesort(int dp, int start, int

end) else

if (len == 1

) else

25 } else

else41}

42if (j != i - 1

) 45}46

return (count + right +left);47}

48 }

code3:純歸併

歸併排序查詢逆序對

description let a 1 a n be a sequence of n numbers.if ia j then the pair i,j is called an inversion pair.the inversion number of a sequence is one com...

查詢陣列中的逆序對

name 查詢陣列中的逆序對 author date 10 01 18 13 57 description 題目描述 在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。輸入 每個測試案例包括兩行 第一行包含乙個整數n,表示陣列...

尋找逆序對

設a 1.n 是乙個包含n個不同數的陣列。如果在ia j 則 i,j 就成為a中的乙個逆序對 inversion 要確定乙個陣列中的逆序對的個數,可以採取分治法。將a分為兩部分a1和a2,則a中逆序對的數目等於a1中逆序對的數目 a2中逆序對的數目和a1,a2合併時a1中比a2中元素大的數目。inc...