當前位置:成語大全網 - 漢語詞典 - 逆序數的三種計算方法

逆序數的三種計算方法

?計算逆序數的方法有三種:冒泡排序法、歸並排序法和樹形數組法。

逆數:壹個排列中逆數的總數,也就是說,對於n個不同的元素,先定義壹個標準的順序。比如對於n個不同的自然數,可以從小到大定義標準階,所以在這n個元素的任意排列中,當兩個元素的階與標準階不同時,就說有1個逆。壹個排列中所有逆的總數叫做這個排列中逆的個數。

在壹種排列中,如果壹對數的前後位置與大小順序相反,即前數大於後數,則稱之為逆序。壹個排列中逆的總數叫做這個排列中逆的個數。

1,冒泡排序:(默認從小到大排序)每次上升過程遇到較大的反向序號+1,時間復雜度為O (n 2),不推薦。

2.合並排序:序列1: 345序列2: 2367。因為歸並過程中的兩個序列是分別排序的,如果A(I);A(j),當a(j)放在a(i)之前,則(I)和mid (J)的個數都大於a(j),所以逆數的個數增加了mid-i+1,時間復雜度為O(N*logN)。

3.樹數組:主要是壹個離散化過程。所謂離散化就是把數組按順序排列,比如從小到大排序,

然後使第壹個記法為1,第二個記法為2,那麽即使是離散化(離散,字面,分離,分散,分成小塊,當然每壹塊不能相同),也是這樣:

序列?5 ?1 5 ?2

離散數組?3 1 3 2

於是,從最小的數開始建立壹個樹形數組(tag),所以i-query(b(i))是當前數的逆數(I是當前第I個數,b(i)是當前數的最小數,query問我有多少個tag(小於等於當前數),i-query。的數量?數量)

?逆序數離散化三部曲

1,數組ha[]存儲所有已有數據,並按排序進行排序。

2.對高可用性陣列進行重復數據消除,僅保留壹個重復數據。唯壹重復數據刪除(唯壹功能的前提是有序)。

3.壹個數離散化後查詢對應的數,lower_bound檢查排名。