問題:假設a[1..n]是乙個有n個不同數的陣列。若i < j 且a[i] > a[j],則對偶(i, j)成為a的乙個逆序對(inversion)。
d.給出乙個確定在n個元素的任何排列中逆序對數量的演算法,最壞情況需要o(nlgn)時間。
思路:由歸併排序演算法的思想可以知道,兩個子串行l(i)和r(j)歸併前各自有序,歸併為a(k)後整體有序。歸併前,若r(j)中有乙個數x小於l(i)中的乙個數y,即x < y,則必有i < j且子串行l(i)中y之後的數都比x大,即子串行l(i)中y之後的每乙個數和子串行r(i)中的x也滿足逆序對的條件。又由於歸併排序的執行時間複雜度為o(nlgn),所以可以借助歸併排序對逆序對進行統計。
演算法偽**如下:
算導4(8皇后 回溯問題)
solve the 8 queenproblem using back trackingalgorithm.解題思路 這道題目可以使用回溯演算法。這種方法的思想是 為了求得問題的解,先選擇某一種可能情況向前探索,如果發現是錯誤的,則退回一步重新選擇,繼續向前探索,如此反覆進行,直至得到解或者證明無解...
逆序對問題
逆序對問題。給一列數a1 a2,an 求它的逆序對數,即有多少個有序對 i j 使得 i j 但ai aj n 可以高達106 由於 n 的數量級到了106 所以採用o n2 及以上的時間複雜度肯定會超時,所以必須選取o nlog 2n 及以下時間複雜度的演算法。逆序對的求解思路和歸併排序很像,嘗試...
逆序對問題 O nlgn
問題描述 在陣列arr中,i j 如果 arr i arr j 那麼就存在乙個逆序對 目的就是求出逆序對的數目。演算法 暴力求解,o n 2 下面運用了一種很巧妙的方法,通過歸併排序的歸併過程,進行逆序對的統計!具體例子分析 比如 1 5 3 2 4 當 1 3 5 與 2 4 合併的時候,a.1 ...