Title: Bubble Sort Merge Sort
1Bubble SortMerge Sort
Lecture 16
2Bubble Sort
3Sorting
- Sorting takes an unordered collection and makes
it an ordered one.
1 2 3 4 5
6
101
12
5
35
42
77
1 2 3 4 5
6
4"Bubbling Up" the Largest Element
- Traverse a collection of elements
- Move from the front to the end
- Bubble the largest value to the end using
pair-wise comparisons and swapping
1 2 3 4 5
6
12
101
5
35
42
77
5"Bubbling Up" the Largest Element
- Traverse a collection of elements
- Move from the front to the end
- Bubble the largest value to the end using
pair-wise comparisons and swapping
1 2 3 4 5
6
Swap
12
101
5
35
42
77
6"Bubbling Up" the Largest Element
- Traverse a collection of elements
- Move from the front to the end
- Bubble the largest value to the end using
pair-wise comparisons and swapping
1 2 3 4 5
6
Swap
12
101
5
35
77
42
7"Bubbling Up" the Largest Element
- Traverse a collection of elements
- Move from the front to the end
- Bubble the largest value to the end using
pair-wise comparisons and swapping
1 2 3 4 5
6
Swap
12
101
5
77
35
42
8"Bubbling Up" the Largest Element
- Traverse a collection of elements
- Move from the front to the end
- Bubble the largest value to the end using
pair-wise comparisons and swapping
1 2 3 4 5
6
77
101
5
12
35
42
No need to swap
9"Bubbling Up" the Largest Element
- Traverse a collection of elements
- Move from the front to the end
- Bubble the largest value to the end using
pair-wise comparisons and swapping
1 2 3 4 5
6
Swap
77
101
5
12
35
42
10"Bubbling Up" the Largest Element
- Traverse a collection of elements
- Move from the front to the end
- Bubble the largest value to the end using
pair-wise comparisons and swapping
1 2 3 4 5
6
101
77
5
12
35
42
Largest value correctly placed
11The Bubble Up Algorithm
- index lt- 1
- last_compare_at lt- n 1
- loop
- exitif(index gt last_compare_at)
- if(Aindex gt Aindex 1) then
- Swap(Aindex, Aindex 1)
- endif
- index lt- index 1
- endloop
12No, Swap isnt built in.
LB
- Procedure Swap(a, b isoftype in/out Num)
- t isoftype Num
- t lt- a
- a lt- b
- b lt- t
- endprocedure // Swap
13Items of Interest
- Notice that only the largest value is correctly
placed - All other values are still out of order
- So we need to repeat this process
1 2 3 4 5
6
101
77
5
12
35
42
Largest value correctly placed
14Repeat Bubble Up How Many Times?
- If we have N elements
- And if each time we bubble an element, we place
it in its correct location - Then we repeat the bubble up process N 1
times. - This guarantees well correctly place all N
elements.
15Bubbling All the Elements
16Reducing the Number of Comparisons
17Reducing the Number of Comparisons
- On the Nth bubble up, we only need to do MAX-N
comparisons. - For example
- This is the 4th bubble up
- MAX is 6
- Thus we have 2 comparisons to do
18Putting It All Together
19- N is // Size of Array
- Arr_Type definesa Array1..N of Num
- Procedure Swap(n1, n2 isoftype in/out Num)
- temp isoftype Num
- temp lt- n1
- n1 lt- n2
- n2 lt- temp
- endprocedure // Swap
20- procedure Bubblesort(A isoftype in/out Arr_Type)
- to_do, index isoftype Num
- to_do lt- N 1
- loop
- exitif(to_do 0)
- index lt- 1
- loop
- exitif(index gt to_do)
- if(Aindex gt Aindex 1) then
- Swap(Aindex, Aindex 1)
- endif
- index lt- index 1
- endloop
- to_do lt- to_do - 1
- endloop
- endprocedure // Bubblesort
Outer loop
Inner loop
21Already Sorted Collections?
- What if the collection was already sorted?
- What if only a few elements were out of place and
after a couple of bubble ups, the collection
was sorted? - We want to be able to detect this and stop
early!
22Using a Boolean Flag
- We can use a boolean variable to determine if any
swapping occurred during the bubble up. - If no swapping occurred, then we know that the
collection is already sorted! - This boolean flag needs to be reset after each
bubble up.
23- did_swap isoftype Boolean
- did_swap lt- true
- loop
- exitif ((to_do 0) OR NOT(did_swap))
- index lt- 1
- did_swap lt- false
- loop
- exitif(index gt to_do)
- if(Aindex gt Aindex 1) then
- Swap(Aindex, Aindex 1)
- did_swap lt- true
- endif
- index lt- index 1
- endloop
- to_do lt- to_do - 1
- endloop
24An Animated Example
N
8
true
did_swap
to_do
7
index
67
45
23
14
6
33
98
42
1 2 3 4 5 6 7 8
25An Animated Example
N
8
false
did_swap
to_do
7
index
1
67
45
23
14
6
33
98
42
1 2 3 4 5 6 7 8
26An Animated Example
N
8
false
did_swap
to_do
7
index
1
Swap
67
45
23
14
6
33
98
42
1 2 3 4 5 6 7 8
27An Animated Example
N
8
true
did_swap
to_do
7
index
1
Swap
67
45
98
14
6
33
23
42
1 2 3 4 5 6 7 8
28An Animated Example
N
8
true
did_swap
to_do
7
index
2
67
45
98
14
6
33
23
42
1 2 3 4 5 6 7 8
29An Animated Example
N
8
true
did_swap
to_do
7
index
2
Swap
67
45
98
14
6
33
23
42
1 2 3 4 5 6 7 8
30An Animated Example
N
8
true
did_swap
to_do
7
index
2
Swap
67
98
45
14
6
33
23
42
1 2 3 4 5 6 7 8
31An Animated Example
N
8
true
did_swap
to_do
7
index
3
67
98
45
14
6
33
23
42
1 2 3 4 5 6 7 8
32An Animated Example
N
8
true
did_swap
to_do
7
index
3
Swap
67
98
45
14
6
33
23
42
1 2 3 4 5 6 7 8
33An Animated Example
N
8
true
did_swap
to_do
7
index
3
Swap
67
14
45
98
6
33
23
42
1 2 3 4 5 6 7 8
34An Animated Example
N
8
true
did_swap
to_do
7
index
4
67
14
45
98
6
33
23
42
1 2 3 4 5 6 7 8
35An Animated Example
N
8
true
did_swap
to_do
7
index
4
Swap
67
14
45
98
6
33
23
42
1 2 3 4 5 6 7 8
36An Animated Example
N
8
true
did_swap
to_do
7
index
4
Swap
67
14
45
6
98
33
23
42
1 2 3 4 5 6 7 8
37An Animated Example
N
8
true
did_swap
to_do
7
index
5
67
14
45
6
98
33
23
42
1 2 3 4 5 6 7 8
38An Animated Example
N
8
true
did_swap
to_do
7
index
5
Swap
67
14
45
6
98
33
23
42
1 2 3 4 5 6 7 8
39An Animated Example
N
8
true
did_swap
to_do
7
index
5
Swap
98
14
45
6
67
33
23
42
1 2 3 4 5 6 7 8
40An Animated Example
N
8
true
did_swap
to_do
7
index
6
98
14
45
6
67
33
23
42
1 2 3 4 5 6 7 8
41An Animated Example
N
8
true
did_swap
to_do
7
index
6
Swap
98
14
45
6
67
33
23
42
1 2 3 4 5 6 7 8
42An Animated Example
N
8
true
did_swap
to_do
7
index
6
Swap
33
14
45
6
67
98
23
42
1 2 3 4 5 6 7 8
43An Animated Example
N
8
true
did_swap
to_do
7
index
7
33
14
45
6
67
98
23
42
1 2 3 4 5 6 7 8
44An Animated Example
N
8
true
did_swap
to_do
7
index
7
Swap
33
14
45
6
67
98
23
42
1 2 3 4 5 6 7 8
45An Animated Example
N
8
true
did_swap
to_do
7
index
7
Swap
33
14
45
6
67
42
23
98
1 2 3 4 5 6 7 8
46After First Pass of Outer Loop
N
8
true
did_swap
to_do
7
Finished first Bubble Up
index
8
33
14
45
6
67
42
23
98
1 2 3 4 5 6 7 8
47The Second Bubble Up
N
8
false
did_swap
to_do
6
index
1
33
14
45
6
67
42
23
98
1 2 3 4 5 6 7 8
48The Second Bubble Up
N
8
false
did_swap
to_do
6
index
1
No Swap
33
14
45
6
67
42
23
98
1 2 3 4 5 6 7 8
49The Second Bubble Up
N
8
false
did_swap
to_do
6
index
2
33
14
45
6
67
42
23
98
1 2 3 4 5 6 7 8
50The Second Bubble Up
N
8
false
did_swap
to_do
6
index
2
Swap
33
14
45
6
67
42
23
98
1 2 3 4 5 6 7 8
51The Second Bubble Up
N
8
true
did_swap
to_do
6
index
2
Swap
33
45
14
6
67
42
23
98
1 2 3 4 5 6 7 8
52The Second Bubble Up
N
8
true
did_swap
to_do
6
index
3
33
45
14
6
67
42
23
98
1 2 3 4 5 6 7 8
53The Second Bubble Up
N
8
true
did_swap
to_do
6
index
3
Swap
33
45
14
6
67
42
23
98
1 2 3 4 5 6 7 8
54The Second Bubble Up
N
8
true
did_swap
to_do
6
index
3
Swap
33
6
14
45
67
42
23
98
1 2 3 4 5 6 7 8
55The Second Bubble Up
N
8
true
did_swap
to_do
6
index
4
33
6
14
45
67
42
23
98
1 2 3 4 5 6 7 8
56The Second Bubble Up
N
8
true
did_swap
to_do
6
index
4
No Swap
33
6
14
45
67
42
23
98
1 2 3 4 5 6 7 8
57The Second Bubble Up
N
8
true
did_swap
to_do
6
index
5
33
6
14
45
67
42
23
98
1 2 3 4 5 6 7 8
58The Second Bubble Up
N
8
true
did_swap
to_do
6
index
5
Swap
33
6
14
45
67
42
23
98
1 2 3 4 5 6 7 8
59The Second Bubble Up
N
8
true
did_swap
to_do
6
index
5
Swap
67
6
14
45
33
42
23
98
1 2 3 4 5 6 7 8
60The Second Bubble Up
N
8
true
did_swap
to_do
6
index
6
67
6
14
45
33
42
23
98
1 2 3 4 5 6 7 8
61The Second Bubble Up
N
8
true
did_swap
to_do
6
index
6
Swap
67
6
14
45
33
42
23
98
1 2 3 4 5 6 7 8
62The Second Bubble Up
N
8
true
did_swap
to_do
6
index
6
Swap
42
6
14
45
33
67
23
98
1 2 3 4 5 6 7 8
63After Second Pass of Outer Loop
N
8
true
did_swap
to_do
6
Finished second Bubble Up
index
7
42
6
14
45
33
67
23
98
1 2 3 4 5 6 7 8
64The Third Bubble Up
N
8
false
did_swap
to_do
5
index
1
42
6
14
45
33
67
23
98
1 2 3 4 5 6 7 8
65The Third Bubble Up
N
8
false
did_swap
to_do
5
index
1
Swap
42
6
14
45
33
67
23
98
1 2 3 4 5 6 7 8
66The Third Bubble Up
N
8
true
did_swap
to_do
5
index
1
Swap
42
6
23
45
33
67
14
98
1 2 3 4 5 6 7 8
67The Third Bubble Up
N
8
true
did_swap
to_do
5
index
2
42
6
23
45
33
67
14
98
1 2 3 4 5 6 7 8
68The Third Bubble Up
N
8
true
did_swap
to_do
5
index
2
Swap
42
6
23
45
33
67
14
98
1 2 3 4 5 6 7 8
69The Third Bubble Up
N
8
true
did_swap
to_do
5
index
2
Swap
42
23
6
45
33
67
14
98
1 2 3 4 5 6 7 8
70The Third Bubble Up
N
8
true
did_swap
to_do
5
index
3
42
23
6
45
33
67
14
98
1 2 3 4 5 6 7 8
71The Third Bubble Up
N
8
true
did_swap
to_do
5
index
3
No Swap
42
23
6
45
33
67
14
98
1 2 3 4 5 6 7 8
72The Third Bubble Up
N
8
true
did_swap
to_do
5
index
4
42
23
6
45
33
67
14
98
1 2 3 4 5 6 7 8
73The Third Bubble Up
N
8
true
did_swap
to_do
5
index
4
Swap
42
23
6
45
33
67
14
98
1 2 3 4 5 6 7 8
74The Third Bubble Up
N
8
true
did_swap
to_do
5
index
4
Swap
42
23
6
33
45
67
14
98
1 2 3 4 5 6 7 8
75The Third Bubble Up
N
8
true
did_swap
to_do
5
index
5
42
23
6
33
45
67
14
98
1 2 3 4 5 6 7 8
76The Third Bubble Up
N
8
true
did_swap
to_do
5
index
5
Swap
42
23
6
33
45
67
14
98
1 2 3 4 5 6 7 8
77The Third Bubble Up
N
8
true
did_swap
to_do
5
index
5
Swap
45
23
6
33
42
67
14
98
1 2 3 4 5 6 7 8
78After Third Pass of Outer Loop
N
8
true
did_swap
to_do
5
Finished third Bubble Up
index
6
45
23
6
33
42
67
14
98
1 2 3 4 5 6 7 8
79The Fourth Bubble Up
N
8
false
did_swap
to_do
4
index
1
45
23
6
33
42
67
14
98
1 2 3 4 5 6 7 8
80The Fourth Bubble Up
N
8
false
did_swap
to_do
4
index
1
Swap
45
23
6
33
42
67
14
98
1 2 3 4 5 6 7 8
81The Fourth Bubble Up
N
8
true
did_swap
to_do
4
index
1
Swap
45
23
14
33
42
67
6
98
1 2 3 4 5 6 7 8
82The Fourth Bubble Up
N
8
true
did_swap
to_do
4
index
2
45
23
14
33
42
67
6
98
1 2 3 4 5 6 7 8
83The Fourth Bubble Up
N
8
true
did_swap
to_do
4
index
2
No Swap
45
23
14
33
42
67
6
98
1 2 3 4 5 6 7 8
84The Fourth Bubble Up
N
8
true
did_swap
to_do
4
index
3
45
23
14
33
42
67
6
98
1 2 3 4 5 6 7 8
85The Fourth Bubble Up
N
8
true
did_swap
to_do
4
index
3
No Swap
45
23
14
33
42
67
6
98
1 2 3 4 5 6 7 8
86The Fourth Bubble Up
N
8
true
did_swap
to_do
4
index
4
45
23
14
33
42
67
6
98
1 2 3 4 5 6 7 8
87The Fourth Bubble Up
N
8
true
did_swap
to_do
4
index
4
No Swap
45
23
14
33
42
67
6
98
1 2 3 4 5 6 7 8
88After Fourth Pass of Outer Loop
N
8
true
did_swap
to_do
4
Finished fourth Bubble Up
index
5
45
23
14
33
42
67
6
98
1 2 3 4 5 6 7 8
89The Fifth Bubble Up
N
8
false
did_swap
to_do
3
index
1
45
23
14
33
42
67
6
98
1 2 3 4 5 6 7 8
90The Fifth Bubble Up
N
8
false
did_swap
to_do
3
index
1
No Swap
45
23
14
33
42
67
6
98
1 2 3 4 5 6 7 8
91The Fifth Bubble Up
N
8
false
did_swap
to_do
3
index
2
45
23
14
33
42
67
6
98
1 2 3 4 5 6 7 8
92The Fifth Bubble Up
N
8
false
did_swap
to_do
3
index
2
No Swap
45
23
14
33
42
67
6
98
1 2 3 4 5 6 7 8
93The Fifth Bubble Up
N
8
false
did_swap
to_do
3
index
3
45
23
14
33
42
67
6
98
1 2 3 4 5 6 7 8
94The Fifth Bubble Up
N
8
false
did_swap
to_do
3
index
3
No Swap
45
23
14
33
42
67
6
98
1 2 3 4 5 6 7 8
95After Fifth Pass of Outer Loop
N
8
false
did_swap
to_do
3
Finished fifth Bubble Up
index
4
45
23
14
33
42
67
6
98
1 2 3 4 5 6 7 8
96Finished Early
N
8
false
did_swap
to_do
3
We didnt do any swapping,so all of the other
elementsmust be correctly placed. We can skip
the last twopasses of the outer loop.
index
4
45
23
14
33
42
67
6
98
1 2 3 4 5 6 7 8
97Summary
- Bubble Up algorithm will move largest value to
its correct location (to the right) - Repeat Bubble Up until all elements are
correctly placed - Maximum of N-1 times
- Can finish early if no swapping occurs
- We reduce the number of elements we compare each
time one is correctly placed
98Truth in CS Act
LB
- NOBODY EVER USES BUBBLE SORT
- NOBODY
- NOT EVER
- BECAUSE IT IS EXTREMELY INEFFICIENT
99Questions?
100Mergesort
101Sorting
- Sorting takes an unordered collection and makes
it an ordered one.
1 2 3 4 5
6
101
12
5
35
42
77
1 2 3 4 5
6
102Divide and Conquer
- Divide and Conquer cuts the problem in half each
time, but uses the result of both halves - cut the problem in half until the problem is
trivial - solve for both halves
- combine the solutions
103Mergesort
- A divide-and-conquer algorithm
- Divide the unsorted array into 2 halves until the
sub-arrays only contain one element - Merge the sub-problem solutions together
- Compare the sub-arrays first elements
- Remove the smallest element and put it into the
result array - Continue the process until all elements have been
put into the result array
104How to Remember Merge Sort?
105How To Remember Merge Sort?
(q,t)
Just as Mariah recursively moves her hands into
smaller circles, so too does merge sort
recursively split an array into smaller segments.
We need two such recursions, one for each half of
the split array.
106Algorithm
- Mergesort(Passed an array)
- if array size gt 1
- Divide array in half
- Call Mergesort on first half.
- Call Mergesort on second half.
- Merge two halves.
- Merge(Passed two arrays)
- Compare leading element in each array
- Select lower and place in new array.
- (If one input array is empty then place
- remainder of other array in output array)
-
107More TRUTH in CS
LB
- We dont really pass in two arrays!
- We pass in one array with indicator variables
which tell us where one set of data starts and
finishes and where the other set of data starts
and finishes. - Honest.
108Algorithm
LB
- Mergesort(Passed an array)
- if array size gt 1
- Divide array in half
- Call Mergesort on first half.
- Call Mergesort on second half.
- Merge two halves.
- Merge(Passed two arrays)
- Compare leading element in each array
- Select lower and place in new array.
- (If one input array is empty then place
- remainder of other array in output array)
-
10967
45
23
14
6
33
98
42
11067
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
11167
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
11267
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
23
98
11367
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
23
98
Merge
11467
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
23
98
23
Merge
11567
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
23
98
23
98
Merge
11667
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
23
98
45
14
23
98
11767
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
23
98
45
14
23
98
Merge
11867
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
23
98
45
14
14
23
98
Merge
11967
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
23
98
45
14
45
23
98
14
Merge
12067
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
23
98
45
14
98
45
14
23
Merge
12167
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
23
98
45
14
98
14
23
45
14
Merge
12267
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
23
98
45
14
23
14
98
45
14
23
Merge
12367
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
23
98
45
14
23
98
45
14
14
23
45
Merge
12467
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
23
98
45
14
23
98
45
14
14
23
45
98
Merge
12567
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
23
98
45
14
14
23
45
98
12667
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
23
98
45
14
14
23
45
98
12767
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
23
98
45
14
Merge
14
23
45
98
12867
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
6
23
98
45
14
Merge
14
23
45
98
12967
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
67
23
98
45
14
6
Merge
14
23
45
98
13067
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
67
6
14
23
45
98
13167
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
67
6
Merge
14
23
45
98
13267
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
33
23
98
45
14
67
6
Merge
14
23
45
98
13367
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
42
23
98
45
14
67
6
33
Merge
14
23
45
98
13467
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
67
6
42
33
14
23
45
98
Merge
13567
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
6
42
33
67
6
14
23
45
98
Merge
13667
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
6
33
67
42
6
33
14
23
45
98
Merge
13767
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
6
42
33
67
6
33
42
14
23
45
98
Merge
13867
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
67
6
42
33
6
33
42
67
14
23
45
98
Merge
13967
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
67
6
42
33
33
42
67
6
23
45
98
14
Merge
14067
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
67
6
42
33
6
42
67
33
23
45
98
14
6
Merge
14167
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
67
6
42
33
6
42
67
33
14
45
98
23
6
14
Merge
14267
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
67
6
42
33
6
42
67
33
14
23
98
45
6
14
23
Merge
14367
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
67
6
42
33
6
33
67
42
14
23
98
45
6
14
23
33
Merge
14467
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
67
6
42
33
6
33
42
67
14
23
98
45
6
14
23
33
42
Merge
14567
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
67
6
42
33
6
33
42
67
14
23
45
98
6
14
23
33
42
45
Merge
14667
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
67
6
42
33
6
33
42
67
14
23
45
98
6
14
23
33
42
45
67
Merge
14767
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
67
6
42
33
6
33
42
67
14
23
45
98
6
14
23
33
42
45
67
98
Merge
14867
45
23
14
6
33
98
42
67
45
23
14
6
33
98
42
45
23
14
98
67
6
33
42
23
98
45
14
67
6
33
42
23
98
45
14
67
6
42
33
6
33
42
67
14
23
45
98
6
14
23
33
42
45
67
98
14967
45
23
14
6
33
98
42
6
14
23
33
42
45
67
98
150Summary
- Divide the unsorted collection into two
-
- Until the sub-arrays only contain one element
- Then merge the sub-problem solutions together
151Questions?
152Review?
153(No Transcript)