快排求逆序數 快排與歸併時間複雜度比較

2021-07-23 08:56:34 字數 1529 閱讀 1803

本文參考其他用快排求逆序數的方法。

在用快排求解逆序數前,我先考慮了這個問題,1:歸併和快排的時間複雜度都是nlog(n),為什麼不用歸併?

我認為應該是由於快排在每次合併時都有用到臨時陣列,然後每次還需要把臨時陣列重新copy到原陣列中 ,增加了時間複雜度;快排雖然也存在最壞的情況,即n^2,但是由於其隨機性,所以期望的時間複雜度仍然是nlog(n),因此如果能用快排求逆序數的話,也是不錯的。

a[10]=7

1 9

563

11 2

10 9

s1:1 5

3 2s2:7 9

11 10

9以上比較過程中記錄逆序數,時間複雜度nlog(n)。

求得逆序數:2500572073

歸併 逆序數 快排 第k小數

目錄 歸併排序 完整 快速排序 思路 進行二分,然後合併。對於合併的兩個模組,每乙個模組必定已排好,因為是排完才合併。例如2 4 6 1 3 7 雙 指標 乙個指向左邊 乙個指向右邊。右邊1 左邊2 1進入b陣列 此時2 4 6 3 7 b 右邊3 左邊2 2進入b陣列 此時4 6 3 7 b 以此...

快排 歸併 堆排

快排 include include include includeusing namespace std void quicksort vector a,int l,int r 終止遞迴的條件,子串行長度為1 int mid low high low 2 取得序列中間的元素 mergesort a...

排序 快排與歸併

目錄歸併排序 1.隨機找到乙個基準數.2.將所有小於他的數放在左邊,所有大的數放在右邊.3.最後重複以上操作,直至各部分左右指標相遇.如gif所示,乙個無序的陣列3 5 8 1 2 9 4 7 6 把右端點作為基準數,然後左指標開始從左掃瞄,當遇 6 的數時停止,此時右指標就開始掃瞄,當遇到 6 的...