回覆列表
  • 1 # Life桑葉

    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個逆序。一個排列中所有逆序總數叫做這個排列的逆序數。

  • 中秋節和大豐收的關聯?
  • 你覺得薛之謙是怎樣一個人?