思路
1.笨方法 o(n^2)
2.分治 o(nlogn)
(1).將陣列分成兩份 求兩部分的逆序數
(2).再算有多少逆序是從左邊選擇乙個逆序,再從右邊選擇乙個逆序組成的。o(n)
/*
求全排列的逆序數
*/#include
using
namespace std;
intmergeaccount
(int a,
int left ,
int mid ,
int right)
;int
merge
(int a,
int left ,
int right)
return count;
}int
mergeaccount
(int a,
int left ,
int mid ,
int right)
else
if(j >= len2)
else
if(al[i]
> ar[j]
)else
}return count;
}int
main()
cout<<
merge
(a ,
1, n)
}
逆序數問題 c
設a1,a2,an是集合的乙個排列,如果iaj,則序偶 ai,aj 稱為該排列的乙個逆序。例如,2,3,1有兩個逆序 3,1 和 2,1 設計演算法統計給定排列中含有逆序的個數。第一行輸入集合中元素個數n,第二行輸入n個集合元素 含有逆序的個數 2 3 1 include using namespa...
簡單鍊錶 未完善
無序 與輸入一致 include includeusing namespace std struct list list head,tail head頭指標是個哨兵,無實際元素,tail尾指標也是哨兵,但有實際元素 void creat list int n tail p return void p...
求逆序數 逆序數 歸併排序
求排列的逆序數 分治 一 題目描述 總時間限制 1000ms 記憶體限制 65536kb 描述 在internet上的搜尋引擎經常需要對資訊進行比較,比如可以通過某個人對一些事物的排名來估計他 或她 對各種不同資訊的興趣,從而實現個性化的服務。對於不同的排名結果可以用逆序來評價它們之間的差異。考慮1...