32 陣列中的逆序對

2021-07-11 17:44:43 字數 1163 閱讀 9050

陣列中的逆序對

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

沒想到這道題能暴力破解。

class solution }}

return retval ;

}};

這道題我看的劍指offer上的**,inversepairscore函式的形參和實參看上去好繞.....

// 30.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include using namespace::std;

class solution

int retval = inversepairscore(data, copy, 0, data.size() - 1);

return retval;

} int inversepairscore(vector& data, vector& copy, int start, int end)

int length = (end - start) / 2;

int left = inversepairscore(copy, data, start, start + length);

int right = inversepairscore(copy, data, start + length + 1, end);

int i = start + length;

int j = end;

int indexofcopy = end;

int count = 0;

while (i >= start && j >= start + length + 1)

else

} for (; i >= start; --i)

copy[indexofcopy--] = data[i];

for (; j >= start + length + 1; --j)

copy[indexofcopy--] = data[j];

return left + right + count;

}};int _tmain(int argc, _tchar* argv)

演算法32 計算陣列中的逆序對

設 a 1.n 是乙個陣列,如果對於 i j 有 a i a j 則 a i 和 a j 構成一對逆序。給定乙個陣列,計算陣列中逆序對的個數。例如陣列 a 則 是逆序對,返回 3。兩個 for 迴圈列舉所有的數對,如果是逆序對,則 count 最終返回 count 即可。時間複雜度 o n 2 如下...

陣列中逆序對

題目 在陣列中的兩個數字,如果前面的乙個數字大於後面的數字,則這兩個數字為乙個逆序對。輸入乙個陣列,求這個陣列的逆序對個數。例如 給定陣列 則有 5,3 5,1 8,3 8,1 3,1 這5個逆序對。問題分析 我採用兩種方法來解決這個問題 1 考慮到二叉搜尋樹中每個節點x,它的左子樹所有關鍵字的值小...

陣列中的逆序對

來自劍指offer 分析 我們第一反應是順序掃瞄整個陣列,每掃瞄到乙個數字時,逐個比較該數字和它後面的數字的大小。如果後面的數字比它小,則這個兩個數字就組成了乙個逆序對。假設陣列有n個數字,由於每個數字都要和o n 個數字作比較,因此這個演算法的時間複雜度為o n 2 換思路 我們採用歸併思想,先考...