c 逆序數 未完善

2021-10-10 14:03:51 字數 754 閱讀 7145

思路

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...