Theory of Time 2024 (Universal Theory for Everything)
Mergesort
1. 4
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
2. 5
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E G M R A C E R Ta[]
midlo mid+1 hi
3. 6
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E G M R A C E R Ta[]
midlo mid+1 hi
copy to auxiliary array
aux[] E E G M R A C E R T
4. 7
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E G M R A C E R Ta[]
mid
k
mid+1 hi
copy to auxiliary array
aux[] E E G M R A C E R T
i j
sorted result
5. 8
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E G M R A C E R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
6. 9
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E G M R A C E R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
A
7. 10
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E G M R A C E R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
A
8. 11
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E G M R A C E R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
A C
9. 12
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E G M R A C E R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
A C
10. 13
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E E M R A C E R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
A C
11. 14
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E E M R A C E R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
A C
12. 15
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E E E R A C E R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
A C
13. 16
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E E E R A C E R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
A C
14. 17
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E E E E A C E R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
A C
15. 18
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E E E E A C E R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
A C
16. 19
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E E E E G C E R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
A C
17. 20
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E E E E G C E R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
A C
18. 21
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E E E E G M E R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
A C
19. 22
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E E E E G M E R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
A C
20. 23
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E E E E G M R R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
A C
21. 24
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E E E E G M R R Ta[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R T
i j
A C
22. 25
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E E E E G M R R Ra[]
mid
k
mid+1 hi
compare minimum in each subarray
aux[] E E G M R A C E R R
i j
A C
j
k
23. 26
Abstract in-place merge demo
Goal: Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],
replace with sorted subarray a[lo] to a[hi].
E E E E E G M R R Ra[]
mid mid+1 hi
abstract in-place mergesort complete using auxiliary array
aux[] E E G M R A C E R R
A C