-----------初始狀態-----------------
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,發現還能再分...