面試題36 陣列中的逆序對

2022-04-28 18:51:08 字數 639 閱讀 6147

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

分析:可以利用二路歸併排序演算法對陣列進行排序,並在排序過程中統計逆序對的數目。

template void inversepairs ( vector& a, int &count )

template

void inversepairs ( vector& a, int left, int right, int&count)

}

template

void inversepairscore ( vector& a, int leftstart, int rightstart, int rightend, int&count )

else

}while ( leftstart <=leftend )

while ( rightstart <=rightend )

temp[indextemp--] = a[rightend--];

for ( int i = 0; i < numelements; ++i )

a[leftstart + i] =temp[i];

}

面試題36 陣列中的逆序對

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

面試題36 陣列中的逆序對

1.在陣列中的兩個數字如果前面的乙個數字大於後面的數字,則這兩個數字組成乙個逆序對,輸入乙個陣列,求這個陣列中的逆序對的總數。分析 例如在陣列中,一共存在5個逆序對,常規的做法是每次確定乙個數字在陣列中後面有多少個數比他小,這樣的時間複雜度是o n n 比較大,可以先將大的陣列分為小的陣列,再統計逆...

面試題36 陣列中的逆序對

面試題36 陣列中的逆序對 在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007 輸入描述 題目保證輸入的陣列中沒有的相同的數字 資料範圍 對於 50的...