PG歸併排序演算法詳解

2022-08-27 08:15:13 字數 3884 閱讀 1852

-----------初始狀態-----------------

exec_mj_initialize_outer

exec_mj_initialize_inner

-----------中間狀態-----------------

exec_mj_nextouter

exec_mj_testouter

exec_mj_nextinner

exec_mj_skip_test

exec_mj_skipouter_advance

exec_mj_skipinner_advance

-------------結束狀態-----------------

exec_mj_jointuples

exec_mj_endouter

exec_mj_endinner

outer  inner

5 5

5 5

6 8

6 8

7 12

8 14

outer  inner

outer tuple - 5 5 - marked tuple - offset tuple - inner tuple

5 5

6 8

6 8

7 12

8 14

outer  inner

outer tuple - 5 5 - marked tuple - offset tuple

5 5 - inner tuple

6 8

6 8

7 12

8 14

outer  inner

5 5 - marked tuple - offset tuple - inner tuple

outer tuple - 5 5

6 8

6 8

7 12

8 14

outer  inner

5 5 - marked tuple - offset tuple

outer tuple - 5 5 - inner tuple

6 8

6 8

7 12

8 14

outer  inner

5 5 - marked tuple - offset tuple

5 5

outer tuple - 6 8 - inner tuple

6 8

7 12

8 14

outer  inner

5 5 - marked tuple - offset tuple

5 5

6 8 - inner tuple

outer tuple - 6 8

7 12

8 14

outer  inner

5 5 - marked tuple - offset tuple

5 5

6 8 - inner tuple

6 8

outer tuple - 7 12

8 14

outer  inner

5 5

5 5

6 8 - marked tuple - offset tuple - inner tuple

6 8

7 12

outer tuple - 8 14

outer  inner

5 5

5 5

6 8 - marked tuple - offset tuple

6 8 - inner tuple

7 12

outer tuple - 8 14

outer  inner

5 5

5 5

6 8 - marked tuple - offset tuple

6 8

7 12 - inner tuple

8 14

outer tuple - eof eof

outer  inner

5 5

5 5

6 8 - marked tuple

6 8

7 12 - offset tuple

8 14 - inner tuple

outer tuple - eof eof

outer  inner

5 5

5 5

6 8 - marked tuple

6 8

7 12

8 14 - offset tuple

outer tuple - eof eof - inner tuple

狀態exec_mj_testouter,該狀態的前置狀態只有exec_mj_nextinner與exec_mj_nextouter。而在該狀態下外表游標下移獲取資料,因此,outer tuple與inner tuple比較只有兩種情況

狀態exec_mj_nextouter與exec_mj_skipouter_advance的區別:

前者會切換到狀態exec_mj_testouter來比較。

而後者會切換到exec_mj_skip_test來比較。

狀態exec_mj_skip_test與exec_mj_testouter區別:

前者outer tuple與inner tuple比較有三種可能的結果。這裡比較的是current outer tuple與current inner tuple。

而後者只有兩種可能的情況。而這裡比較的是current outer tuple與makred inner tuple。

如果current outer tuple > marked inner tuple,那麼inner tuple從current tuple與outer tuple切換到狀態exec_mj_skip_test進行比較。

恢復標記

在狀態exec_mj_testouter中遇到outer tuple == marked tuple時,這裡會置inner tuple為offset tuple,並且將inner tuple置為之前儲存的offset tuple。

排序演算法 詳解歸併排序演算法

原理,首先將陣列遞迴的分解,直到達到終止條件返回,然後將分成兩段的陣列,進行比較,按從小到大的順序放在臨時陣列裡,然後將這一段排好順序的陣列複製給原來的陣列,繼續返回上一層,進行排序。直到完全完成遞迴。第二段結束了,第一段還有 if begin1 end1 第一段結束了,第二段還有 else 每次都...

C 歸併排序演算法詳解

目錄 歸併排序演算法的平均時間複雜度是o nlogn 歸併演算法的實現就是通過分冶法,將乙個待排序列分成乙個程式設計客棧個小的序列,然後對這些小的序列進行排程式設計客棧序,然後進行合併,合併的時候也會進行排序,這樣,從整體拆成小塊,再從小塊合成整體的乙個過程。1 拆分待排序列 2 進行排序合併 給大...

排序演算法詳解 歸併排序 Merge Sort

核心思想 分治。主題流程 先將乙個序列分成很多個不能再分割的子串行,將各個子串行分別排序後再將子串行合併。其實就是重複兩個步驟 分合併。首先是第乙個小問題,怎麼分?比如說乙個序列 12 23,1,44,233,10,9,8。我們先分成兩段 12 23,1,44 和 233,10,9,8,發現還能再分...