給定一數列,算其中有多少個逆序對

什麼是逆序對?

* 如有一個陣列A[4,5],索引0<1,且A[0]<A[1],此為非逆序對。
* 如有一個陣列A[5,4],索引0<1,且A[0]>A[1],此為逆序對
* 用以衡量數列的有序程度,逆序對越多,數列越無序。

舉例

有一數列[3, 1, 2, 4],求有幾對逆序對?
(0,1),3>1,是一逆序對。
(0,2),3>2,是一逆序對。
(0,3),3<4,不是一逆序對。
(1,2),1<2,不是一逆序對。
(1,3),1<4,不是一逆序對。
(2,3),2<4,不是一逆序對。
共有兩對逆序對(0,1)、(0,2)

Python 實現

暴力求解,時間複雜度為執行次數隨資料量大小的趨勢,資料量n兩個巢狀迴圈使資料量變成n^2,即執行次數,所以時間複雜度為O(n^2)

參考

沒有留言:

張貼留言

寫下幸福點子吧!