36 陣列中逆序對的個數

2021-10-12 03:10:50 字數 542 閱讀 4886

題目描述:在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p.

思路:本質是歸併排序,在比較時加入全域性變數 count 進行記錄逆序對的個數,若

data[start] >= data[index] ,則 count 值為 mid+1-start

**實現:

int count = 0;

public int inversepairs(int array)

private void mergesort(int data,int start,int end)

}private void merge(int data,int start,int mid,int end) else

} while (start <= mid)

while (index <= end)

for (int d : arr)

}

36 陣列中的逆序對

描述 實現 package question36 public class inversepairs private static int mergesort int array,int low,int high return count private static void merge int ...

陣列的逆序對個數

計算陣列的逆序對個數 如果按照公升序為準,如果陣列已經按照公升序排列,則逆序對個數為0 若陣列是降序排列的,則逆序對個數最多。可以使用歸併排序解決 public void sort int n,int start,int end,int t static void merge int n,int s...

面試題36 陣列中的逆序對

題目 在陣列中的兩個數字如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。例如,有乙個陣列為array 0.n 其中有元素a i a j 如果 當ia j 那麼我們就稱 a i a j 為乙個逆序對。在陣列中一共存在5對逆序對,分別是 7,6 7...