劍指Offer 035陣列中的逆序對

2021-09-25 08:21:05 字數 606 閱讀 7164

035陣列中的逆序對

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

方法一:暴力法

思路:兩個for迴圈判斷,可惜時間超時,是n^2的時間複雜度

方法二:歸併排序法(複雜度n*logn)

思路:先將陣列中的元素分成乙個乙個的,然後兩兩合併,在合併的時候進行判斷,用雙指標法,指向兩個陣列的頭部,如果左陣列i位置上的數大於右陣列j位置上的數,那麼左陣列i之後的元素都大於j位置的數,則計算出了逆序對,然後再移動指標

**:

int count=0;

public int inversepairs(int array)

public void mergesort(int a,int low,int high)

public void merge(int a,int low,int mid,int high)else

}while(i<=mid)

while(j<=high)

for (int l = 0; l }

劍指offer 陣列

資料是最簡單的資料結構,它佔據一塊連續的記憶體並按照順序儲存資料。建立陣列時,首先指點陣列的容量大小,然後根據大小分配記憶體。缺點 空間效率不高。經常有空閒的區域滅有得到充分利用。優點 時間效率很高。可以根據時間效率高的特點,來實現簡單的雜湊表 把陣列的下標設為雜湊表的鍵值,陣列中的每乙個數字設為雜...

劍指offer 陣列

public class 03 陣列中的重複數字 swap number,number i i return 1 交換 public void swap int number,int i,int j public class 03 陣列中的重複數字 return 1 public intfindre...

劍指offer 陣列

問題描述 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。function find target,array return false 問題描述 在乙個長度...