0% found this document useful (0 votes)
66 views153 pages

Cs 1311 Lecture 16 WDL

The document describes the bubble sort algorithm. Bubble sort works by repeatedly stepping through the list to be sorted, comparing each pair of adjacent items and swapping them if they are in the wrong order. This process is repeated until the list is fully sorted. The algorithm uses a flag to check if a swap occurred, and stops early if it detects the list is already sorted after a pass with no swaps.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
66 views153 pages

Cs 1311 Lecture 16 WDL

The document describes the bubble sort algorithm. Bubble sort works by repeatedly stepping through the list to be sorted, comparing each pair of adjacent items and swapping them if they are in the wrong order. This process is repeated until the list is fully sorted. The algorithm uses a flag to check if a swap occurred, and stops early if it detects the list is already sorted after a pass with no swaps.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 153

Bubble Sort Merge Sort

Bubble Sort

Sorting
Sorting takes an unordered collection and makes it an ordered one.
1 77 2 42 3 35 4 12 5 101 6 5

3 35

12

42

77

101

"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 77 2 42 3 35 4 5 101 6 5

12

"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 35 4 5 101 6 5

Swap77 42 42 77

12

"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 42 2 3 4 5 101 6 5

35 77 Swap77 35

12

"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 42 2 35 3 4 5 101 6 5

12 12 77 Swap77

"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 42 2 35 3 12 4 5 101 6 5

77

No need to swap

"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 42 2 35 3 12 4 5 6

77

5 101Swap101 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 42 2 35 3 12 4 5 5 6

77

101

Largest value correctly placed

The Bubble Up Algorithm


index <- 1 last_compare_at <- n 1
loop exitif(index > last_compare_at) if(A[index] > A[index + 1]) then Swap(A[index], A[index + 1]) endif index <- index + 1 endloop

LB

No, Swap isnt built in.


Procedure Swap(a, b isoftype in/out Num) t isoftype Num t <- a a <- b b <- t endprocedure // Swap

Items 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 42 2 35 3 12 4 5 5 6

77

101

Largest value correctly placed

Repeat 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.

Bubbling All the Elements


1 42 1 35 N-1 1 12 1 12 1 5 2 35 2 12 2 35 2 5 2 12 3 12 3 42 3 5 3 35 3 35 4 77 4 5 4 42 4 42 4 42 5 5 5 77 5 77 5 77 5 77 6 101 6 101 6 101 6 101 6 101

Reducing the Number of Comparisons


1 77 1 42 1 35 2 42 2 35 2 12 3 35 3 12 3 42 4 12 4 77 4 5 5 101 5 5 5 77 6 5 6 101 6 101

1 12
1 12

2 35 2 5

3 5 3 35

4 42
4 42

5 77
5 77

6 101
6 101

Reducing 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 1 12 2 35 3 5 4 42 5 77 6 101

Putting It All Together

N is // Size of Array Arr_Type definesa Array[1..N] of Num Procedure Swap(n1, n2 isoftype in/out Num) temp isoftype Num temp <- n1 n1 <- n2 n2 <- temp endprocedure // Swap

procedure Bubblesort(A isoftype in/out Arr_Type) to_do, index isoftype Num to_do <- N 1 loop exitif(to_do = 0) index <- 1 loop exitif(index > to_do) if(A[index] > A[index + 1]) then Swap(A[index], A[index + 1]) endif index <- index + 1 endloop to_do <- to_do - 1 endloop endprocedure // Bubblesort

Inner loop

Outer loop

Already 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! 1 5 2 12 3 35 4 42 5 77 6 101

Using 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.

did_swap isoftype Boolean did_swap <- true loop exitif ((to_do = 0) OR NOT(did_swap)) index <- 1 did_swap <- false loop exitif(index > to_do) if(A[index] > A[index + 1]) then Swap(A[index], A[index + 1]) did_swap <- true endif index <- index + 1 endloop to_do <- to_do - 1 endloop

An Animated Example
N 8 did_swap true

to_do
index

98 23 45 14 1 2 3 4

6 67 33 42 5 6 7 8

An Animated Example
N 8 did_swap false

to_do
index

7
1

98 23 45 14 1 2 3 4

6 67 33 42 5 6 7 8

An Animated Example
N 8 did_swap false

to_do
index

7
1 Swap 98 23 45 14 1 2 3 4 6 67 33 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
1 Swap 23 98 45 14 1 2 3 4 6 67 33 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
2

23 98 45 14 1 2 3 4

6 67 33 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
2 Swap 23 98 45 14 1 2 3 4 6 67 33 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
2 Swap 23 45 98 14 1 2 3 4 6 67 33 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
3

23 45 98 14 1 2 3 4

6 67 33 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
3 Swap 23 45 98 14 1 2 3 4 6 67 33 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
3 Swap 23 45 14 98 1 2 3 4 6 67 33 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
4

23 45 14 98 1 2 3 4

6 67 33 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
4 Swap 23 45 14 98 1 2 3 4 6 67 33 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
4 Swap 23 45 14 6 1 2 3 4 98 67 33 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
5

23 45 14 6 1 2 3 4

98 67 33 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
5 Swap 23 45 14 6 1 2 3 4 98 67 33 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
5 Swap 23 45 14 6 1 2 3 4 67 98 33 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
6

23 45 14 6 1 2 3 4

67 98 33 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
6 Swap 23 45 14 6 1 2 3 4 67 98 33 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
6 Swap 23 45 14 6 1 2 3 4 67 33 98 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
7

23 45 14 6 1 2 3 4

67 33 98 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
7 Swap 23 45 14 6 1 2 3 4 67 33 98 42 5 6 7 8

An Animated Example
N 8 did_swap true

to_do
index

7
7 Swap 23 45 14 6 1 2 3 4 67 33 42 98 5 6 7 8

After First Pass of Outer Loop


N 8 did_swap true

to_do
index

7
8 Finished first Bubble Up

23 45 14 6 1 2 3 4

67 33 42 98 5 6 7 8

The Second Bubble Up


N 8 did_swap false

to_do
index

6
1

23 45 14 6 1 2 3 4

67 33 42 98 5 6 7 8

The Second Bubble Up


N 8 did_swap false

to_do
index

6
1 No Swap 23 45 14 6 1 2 3 4 67 33 42 98 5 6 7 8

The Second Bubble Up


N 8 did_swap false

to_do
index

6
2

23 45 14 6 1 2 3 4

67 33 42 98 5 6 7 8

The Second Bubble Up


N 8 did_swap false

to_do
index

6
2 Swap 23 45 14 6 1 2 3 4 67 33 42 98 5 6 7 8

The Second Bubble Up


N 8 did_swap true

to_do
index

6
2 Swap 23 14 45 6 1 2 3 4 67 33 42 98 5 6 7 8

The Second Bubble Up


N 8 did_swap true

to_do
index

6
3

23 14 45 6 1 2 3 4

67 33 42 98 5 6 7 8

The Second Bubble Up


N 8 did_swap true

to_do
index

6
3 Swap 23 14 45 6 1 2 3 4 67 33 42 98 5 6 7 8

The Second Bubble Up


N 8 did_swap true

to_do
index

6
3 Swap 23 14 6 1 2 3 45 67 33 42 98 4 5 6 7 8

The Second Bubble Up


N 8 did_swap true

to_do
index

6
4

23 14 6 1 2 3

45 67 33 42 98 4 5 6 7 8

The Second Bubble Up


N 8 did_swap true

to_do
index

6
4 No Swap 23 14 6 1 2 3 45 67 33 42 98 4 5 6 7 8

The Second Bubble Up


N 8 did_swap true

to_do
index

6
5

23 14 6 1 2 3

45 67 33 42 98 4 5 6 7 8

The Second Bubble Up


N 8 did_swap true

to_do
index

6
5 Swap 23 14 6 1 2 3 45 67 33 42 98 4 5 6 7 8

The Second Bubble Up


N 8 did_swap true

to_do
index

6
5 Swap 23 14 6 1 2 3 45 33 67 42 98 4 5 6 7 8

The Second Bubble Up


N 8 did_swap true

to_do
index

6
6

23 14 6 1 2 3

45 33 67 42 98 4 5 6 7 8

The Second Bubble Up


N 8 did_swap true

to_do
index

6
6 Swap 23 14 6 1 2 3 45 33 67 42 98 4 5 6 7 8

The Second Bubble Up


N 8 did_swap true

to_do
index

6
6 Swap 23 14 6 1 2 3 45 33 42 67 98 4 5 6 7 8

After Second Pass of Outer Loop


N 8 did_swap true

to_do
index

6
7 Finished second Bubble Up

23 14 6 1 2 3

45 33 42 67 98 4 5 6 7 8

The Third Bubble Up


N 8 did_swap false

to_do
index

5
1

23 14 6 1 2 3

45 33 42 67 98 4 5 6 7 8

The Third Bubble Up


N 8 did_swap false

to_do
index

5
1 Swap 23 14 6 1 2 3 45 33 42 67 98 4 5 6 7 8

The Third Bubble Up


N 8 did_swap true

to_do
index

5
1 Swap 14 23 6 1 2 3 45 33 42 67 98 4 5 6 7 8

The Third Bubble Up


N 8 did_swap true

to_do
index

5
2

14 23 6 1 2 3

45 33 42 67 98 4 5 6 7 8

The Third Bubble Up


N 8 did_swap true

to_do
index

5
2 Swap 14 23 6 1 2 3 45 33 42 67 98 4 5 6 7 8

The Third Bubble Up


N 8 did_swap true

to_do
index

5
2 Swap 14 6 1 2 23 45 33 42 67 98 3 4 5 6 7 8

The Third Bubble Up


N 8 did_swap true

to_do
index

5
3

14 6 1 2

23 45 33 42 67 98 3 4 5 6 7 8

The Third Bubble Up


N 8 did_swap true

to_do
index

5
3 No Swap 14 6 1 2 23 45 33 42 67 98 3 4 5 6 7 8

The Third Bubble Up


N 8 did_swap true

to_do
index

5
4

14 6 1 2

23 45 33 42 67 98 3 4 5 6 7 8

The Third Bubble Up


N 8 did_swap true

to_do
index

5
4 Swap 14 6 1 2 23 45 33 42 67 98 3 4 5 6 7 8

The Third Bubble Up


N 8 did_swap true

to_do
index

5
4 Swap 14 6 1 2 23 33 45 42 67 98 3 4 5 6 7 8

The Third Bubble Up


N 8 did_swap true

to_do
index

5
5

14 6 1 2

23 33 45 42 67 98 3 4 5 6 7 8

The Third Bubble Up


N 8 did_swap true

to_do
index

5
5 Swap 14 6 1 2 23 33 45 42 67 98 3 4 5 6 7 8

The Third Bubble Up


N 8 did_swap true

to_do
index

5
5 Swap 14 6 1 2 23 33 42 45 67 98 3 4 5 6 7 8

After Third Pass of Outer Loop


N 8 did_swap true

to_do
index

5
6 Finished third Bubble Up

14 6 1 2

23 33 42 45 67 98 3 4 5 6 7 8

The Fourth Bubble Up


N 8 did_swap false

to_do
index

4
1

14 6 1 2

23 33 42 45 67 98 3 4 5 6 7 8

The Fourth Bubble Up


N 8 did_swap false

to_do
index

4
1 Swap 14 6 1 2 23 33 42 45 67 98 3 4 5 6 7 8

The Fourth Bubble Up


N 8 did_swap true

to_do
index

4
1 Swap 6 1 14 23 33 42 45 67 98 2 3 4 5 6 7 8

The Fourth Bubble Up


N 8 did_swap true

to_do
index

4
2

6 1

14 23 33 42 45 67 98 2 3 4 5 6 7 8

The Fourth Bubble Up


N 8 did_swap true

to_do
index

4
2 No Swap 6 1 14 23 33 42 45 67 98 2 3 4 5 6 7 8

The Fourth Bubble Up


N 8 did_swap true

to_do
index

4
3

6 1

14 23 33 42 45 67 98 2 3 4 5 6 7 8

The Fourth Bubble Up


N 8 did_swap true

to_do
index

4
3 No Swap 6 1 14 23 33 42 45 67 98 2 3 4 5 6 7 8

The Fourth Bubble Up


N 8 did_swap true

to_do
index

4
4

6 1

14 23 33 42 45 67 98 2 3 4 5 6 7 8

The Fourth Bubble Up


N 8 did_swap true

to_do
index

4
4 No Swap 6 1 14 23 33 42 45 67 98 2 3 4 5 6 7 8

After Fourth Pass of Outer Loop


N 8 did_swap true

to_do
index

4
5 Finished fourth Bubble Up

6 1

14 23 33 42 45 67 98 2 3 4 5 6 7 8

The Fifth Bubble Up


N 8 did_swap false

to_do
index

3
1

6 1

14 23 33 42 45 67 98 2 3 4 5 6 7 8

The Fifth Bubble Up


N 8 did_swap false

to_do
index

3
1 No Swap 6 1 14 23 33 42 45 67 98 2 3 4 5 6 7 8

The Fifth Bubble Up


N 8 did_swap false

to_do
index

3
2

6 1

14 23 33 42 45 67 98 2 3 4 5 6 7 8

The Fifth Bubble Up


N 8 did_swap false

to_do
index

3
2 No Swap 6 1 14 23 33 42 45 67 98 2 3 4 5 6 7 8

The Fifth Bubble Up


N 8 did_swap false

to_do
index

3
3

6 1

14 23 33 42 45 67 98 2 3 4 5 6 7 8

The Fifth Bubble Up


N 8 did_swap false

to_do
index

3
3 No Swap 6 1 14 23 33 42 45 67 98 2 3 4 5 6 7 8

After Fifth Pass of Outer Loop


N 8 did_swap false Finished fifth Bubble Up

to_do
index

3
4

6 1

14 23 33 42 45 67 98 2 3 4 5 6 7 8

Finished Early
N 8 did_swap false We didnt do any swapping, so all of the other elements must be correctly placed. We can skip the last two passes of the outer loop.

to_do
index

3
4

6
1

14 23 33 42 45 67 98
2 3 4 5 6 7 8

Summary
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

LB

Truth in CS Act
NOBODY EVER USES BUBBLE SORT
NOBODY NOT EVER BECAUSE IT IS EXTREMELY INEFFICIENT

Questions?

Mergesort

Sorting
Sorting takes an unordered collection and makes it an ordered one.
1 77 1 5 2 42 2 12 3 35 3 35 4 12 4 42 5 101 5 77 6 5 6 101

Divide 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

Mergesort
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 37 23 6 89 15

12

19

How to Remember Merge Sort?


Thats easy. Just remember Mariah Carey. As a singing star, Ms. Carey has perfected the wax-on wave motion--a clockwise sweep of her hand used to emphasize lyrics.
The Maria Wax-on Angle: (q,t) The Siren of Subquadratic Sorts

How 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.

Algorithm
Mergesort(Passed an array) if array size > 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)

LB

More TRUTH in CS
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. s1 f1 s2 f2

LB

Algorithm
Mergesort(Passed an array) if array size > 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)

98 23 45 14

6 67 33 42

98 23 45 14 98 23 45 14

6 67 33 42 6 67 33 42

98 23 45 14 98 23 45 14 98 23 45 14

6 67 33 42 6 67 33 42

98 23 45 14 98 23 45 14 98 23 98 23 45 14

6 67 33 42 6 67 33 42

98 23 45 14 98 23 45 14 98 23 98 23 45 14

6 67 33 42 6 67 33 42

Merge

98 23 45 14 98 23 45 14 98 23 98 23 Merge 23 45 14

6 67 33 42 6 67 33 42

98 23 45 14 98 23 45 14 98 23 98 23 45 14

6 67 33 42 6 67 33 42

23 98 Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42

23 98

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42

23 98 Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14 Merge 14

6 67 33 42 6 67 33 42

23 98

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42

23 98

14 45 Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42

23 98

14 45

Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42

23 98 14

14 45

Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42

23 98 14 23

14 45

Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42

23 98

14 45

14 23 45 Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42

23 98

14 45

14 23 45 98 Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 33 42

23 98

14 45

14 23 45 98

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42

23 98

14 45

14 23 45 98

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42

23 98

14 45 Merge

14 23 45 98

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 6 Merge 67 33 42

23 98

14 45

14 23 45 98

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42

23 98

14 45

6 67 Merge

14 23 45 98

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

14 23 45 98

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67 Merge

14 23 45 98

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 33 Merge 42

23 98

14 45

6 67

14 23 45 98

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

33 42 Merge

14 23 45 98

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

33 42

14 23 45 98 Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

33 42

14 23 45 98

6
Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

33 42

14 23 45 98

6 33
Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

33 42

14 23 45 98

6 33 42
Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

33 42

14 23 45 98

6 33 42 67
Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

33 42

14 23 45 98

6 33 42 67

Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

33 42

14 23 45 98 6 Merge

6 33 42 67

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

33 42

14 23 45 98 6 14 Merge

6 33 42 67

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

33 42

14 23 45 98 6 14 23 Merge

6 33 42 67

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

33 42

14 23 45 98 6 14 23 33 Merge

6 33 42 67

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

33 42

14 23 45 98 6 14 23 33 42 Merge

6 33 42 67

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

33 42

14 23 45 98

6 33 42 67

6 14 23 33 42 45 Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

33 42

14 23 45 98

6 33 42 67

6 14 23 33 42 45 67 Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

33 42

14 23 45 98

6 33 42 67

6 14 23 33 42 45 67 98 Merge

98 23 45 14 98 23 45 14 98 23 98 23 45 14 45 14

6 67 33 42 6 67 33 42 6 67 6 67 33 42 33 42

23 98

14 45

6 67

33 42

14 23 45 98

6 33 42 67

6 14 23 33 42 45 67 98

98 23 45 14

6 67 33 42

6 14 23 33 42 45 67 98

Summary
Divide the unsorted collection into two
Until the sub-arrays only contain one element Then merge the sub-problem solutions together

Questions?

Review?

You might also like