分治-求排列的逆序數

問題描述

笨方法:O(n2)
分治O(nlogn)

1)將數組分成兩半,分別求出左半邊的逆序數和右半邊的序數
2)再算有多少逆序是由左半邊去一個數和右半邊取一個數構成(要求O(n)實現)
解決關鍵:左半邊和右半邊都是排好序的.比如,都是從大到小排序的,這樣,左右半邊只需要從頭到尾各掃一遍,就可以找出由量變各取一個數構成的逆序個數
下圖是上面2)的圖示



首先在排好序后,我們可以得到在本組內,逆序數的個數,然后左右各掃一遍,如上圖,如果i<j,那么i后面的書也小于j,肯定不能構成逆序數,j++,當j=5時,i>j,i往后走i++,一直到3,此時不構成,j++,i=3,j=2,構成逆序數,所以得出上述2)中的情況

總結

由歸并排序改進得到,加上計算逆序的步驟
MergeSortAndCount:歸并排序并計算逆序數

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 概述 排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部...
    蟻前閱讀 5,214評論 0 52
  • 概述:排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部...
    每天刷兩次牙閱讀 3,742評論 0 15
  • 我今天想表達我內在的感恩。 感恩爸爸媽媽,在他們艱難的時候把我生下來。雖然沒有無時不刻的陪伴著我,但是在我生病的時...
    黃詩韻17覺醒閱讀 289評論 2 3
  • 黃瓜清脆,熏魚去了刺入口綿軟富含脂肪、蛋白質獨特的香味,而熱量極低,如果只放蔬菜,家里的男人和孩子肯定吃不上幾口,...
    孔雀東南飛飛閱讀 492評論 6 14
  • 今天考完試了,狀態能比昨天恢復一些,不過感覺,又并不是什么好兆頭。 拉著我媽剛去買了點水果,路上跟她聊了好多。 她...
    Vano_閱讀 173評論 0 0