1、直接計數:計算一個排列的逆序數的直接方法是逐個列舉逆序,同時統計個數。例如在序列 { 2, 4, 3, 1 } 中,逆序依次為 (2,1),(4,3),(4,1),(3,1),因此該序列的逆序數為 4。
2、歸併排序:直接計數法雖然簡單直觀,但是其時間複雜度是 O(n^2)。一個更快(但稍複雜)的計算方法是在歸併排序的同時計算逆序數。
計算一個排列的逆序數的直接方法是逐個列舉逆序,同時統計個數。例如在序列 { 2, 4, 3, 1 } 中,逆序依次為 (2,1),(4,3),(4,1),(3,1),因此該序列的逆序數為 4。
所有的偶數的逆序都是0,1的逆序是0,從3開始到2n-1這n-1個奇數有逆序,與奇數2k-1構成逆序的數是2、4、...、2(k-1),一共k-1個。
所以整個排列的逆序數是:∑(k-1),k從2到n取值,結果是n(n-1)/2。 在一個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為一個逆序。
一個排列中逆序的總數就稱為這個排列的逆序數。一個排列中所有逆序總數叫做這個排列的逆序數。 對於n個不同的元素,先規定各元素之間有一個標準次序(例如n個 不同的自然數,可規定從小到大為標準次序)。
於是在這n個元素的任一排列中,當某兩個元素的先後次序與標準次序不同時,就說有1個逆序。一個排列中所有逆序總數叫做這個排列的逆序數。
1、直接計數:計算一個排列的逆序數的直接方法是逐個列舉逆序,同時統計個數。例如在序列 { 2, 4, 3, 1 } 中,逆序依次為 (2,1),(4,3),(4,1),(3,1),因此該序列的逆序數為 4。
2、歸併排序:直接計數法雖然簡單直觀,但是其時間複雜度是 O(n^2)。一個更快(但稍複雜)的計算方法是在歸併排序的同時計算逆序數。
計算一個排列的逆序數的直接方法是逐個列舉逆序,同時統計個數。例如在序列 { 2, 4, 3, 1 } 中,逆序依次為 (2,1),(4,3),(4,1),(3,1),因此該序列的逆序數為 4。
所有的偶數的逆序都是0,1的逆序是0,從3開始到2n-1這n-1個奇數有逆序,與奇數2k-1構成逆序的數是2、4、...、2(k-1),一共k-1個。
所以整個排列的逆序數是:∑(k-1),k從2到n取值,結果是n(n-1)/2。 在一個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為一個逆序。
一個排列中逆序的總數就稱為這個排列的逆序數。一個排列中所有逆序總數叫做這個排列的逆序數。 對於n個不同的元素,先規定各元素之間有一個標準次序(例如n個 不同的自然數,可規定從小到大為標準次序)。
於是在這n個元素的任一排列中,當某兩個元素的先後次序與標準次序不同時,就說有1個逆序。一個排列中所有逆序總數叫做這個排列的逆序數。