如何求一組數字的逆序對

問題描述:

給定一組數字或者輸入一組數字,如{13,2,5,6,7,4},求這組數字的逆序對數量。

首先逆序對的定義:

解決辦法:

1.最基礎最容易理解的算法就是採用循環。從數字的第一個數據開始向後遍歷,碰到逆序就累加。最後輸出逆序對。時間複雜度爲O(n^2)。其實是可以改進的。

優點是好寫,容易理解。

缺點是時間複雜度太高。

2.考慮冒泡排序和直接插入排序。冒泡排序和直接插入排序的一個共同特點就是,每次遍歷僅能消去一個逆序對。因此也可以考慮採用直接插入排序來計算逆序對。直接插入排序的時間複雜度最壞也是O(N^2)。

3採用歸併排序。時間複雜度約爲O(nlogn)。由於是歸併排序,還需要額外的O(N)的空間。

主要思想就是將待求的數組分成兩個等長的數組,分別求兩個數組的逆序,再求整個的逆序對。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章