cs1022 computer programming & principles lecture 2.2 algorithms

143
CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

Upload: hilary-crawford

Post on 18-Jan-2018

222 views

Category:

Documents


0 download

DESCRIPTION

Bubble Sort

TRANSCRIPT

Page 1: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

CS1022 Computer Programming &

Principles

Lecture 2.2Algorithms

Page 2: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

Plan of lecture• Examples of sorting algorithms

2CS1022

Page 3: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

Bubble Sort

Page 4: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

Sorting• Sorting takes an unordered collection and makes

it an ordered one.

512354277 101

5 12 35 42 77 101

1 2 3 4 5 6

1 2 3 4 5 6

Page 5: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

"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

512354277 101

1 2 3 4 5 6

Page 6: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

"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

512354277 101Swap42 77

1 2 3 4 5 6

Page 7: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

"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

512357742 101Swap35 77

1 2 3 4 5 6

Page 8: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

"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

512773542 101Swap12 77

1 2 3 4 5 6

Page 9: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

"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

577123542 101

No need to swap

1 2 3 4 5 6

Page 10: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

"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

577123542 101 Swap5 101

1 2 3 4 5 6

Page 11: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

"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

77123542 5 101

Largest value correctly placed

1 2 3 4 5 6

Page 12: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The “Bubble Up” Algorithmbeginindex <- 1last_compare_at <- n – 1

while not(index > last_compare_at)

if(A[index] > A[index + 1]) then Swap(A[index], A[index + 1])

index <- index + 1end

Page 13: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

No, Swap isn’t built in.beginSwap(a, b)

t <- aa <- bb <- t

end

Page 14: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

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

77123542 5

1 2 3 4 5 6

101

Largest value correctly placed

Page 15: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

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 we'll correctly place all N elements.

Page 16: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

“Bubbling” All the Elements

77123542 5 101

5421235 77 101

42 5 3512 77 101

42 35 512 77 101

42 35 12 5 77 101

N -

1

1 2 3 4 5 6

Page 17: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

Reducing the Number of Comparisons

12 35 42 77 101 5

77123542 5 101

5421235 77 101

42 5 3512 77 101

42 35 512 77 101

Page 18: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

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

42 5 3512 77 101

Page 19: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

Putting It All Together

Page 20: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

begin

to_do, index to_do <- N – 1

while not (to_do = 0) index <- 1 while not (index > to_do) if(A[index] > A[index + 1]) then Swap(A[index], A[index + 1]) index <- index + 1 to_do <- to_do – 1

end

Page 21: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

674523 14 6 3398 42

1 2 3 4 5 6 7 8

to_do

index

7

N 8 did_swap true

Page 22: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

674523 14 6 3398 42

1 2 3 4 5 6 7 8

to_do

index

7

1

N 8 did_swap false

Page 23: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

674523 14 6 3398 42

1 2 3 4 5 6 7 8

to_do

index

7

1

N 8

Swap

did_swap false

Page 24: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

674598 14 6 3323 42

1 2 3 4 5 6 7 8

to_do

index

7

1

N 8

Swap

did_swap true

Page 25: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

674598 14 6 3323 42

1 2 3 4 5 6 7 8

to_do

index

7

2

N 8 did_swap true

Page 26: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

674598 14 6 3323 42

1 2 3 4 5 6 7 8

to_do

index

7

2

N 8

Swap

did_swap true

Page 27: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

679845 14 6 3323 42

1 2 3 4 5 6 7 8

to_do

index

7

2

N 8

Swap

did_swap true

Page 28: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

679845 14 6 3323 42

1 2 3 4 5 6 7 8

to_do

index

7

3

N 8 did_swap true

Page 29: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

679845 14 6 3323 42

1 2 3 4 5 6 7 8

to_do

index

7

3

N 8

Swap

did_swap true

Page 30: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

671445 98 6 3323 42

1 2 3 4 5 6 7 8

to_do

index

7

3

N 8

Swap

did_swap true

Page 31: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

671445 98 6 3323 42

1 2 3 4 5 6 7 8

to_do

index

7

4

N 8 did_swap true

Page 32: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

671445 98 6 3323 42

1 2 3 4 5 6 7 8

to_do

index

7

4

N 8

Swap

did_swap true

Page 33: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

671445 6 98 3323 42

1 2 3 4 5 6 7 8

to_do

index

7

4

N 8

Swap

did_swap true

Page 34: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

671445 6 98 3323 42

1 2 3 4 5 6 7 8

to_do

index

7

5

N 8 did_swap true

Page 35: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

671445 6 98 3323 42

1 2 3 4 5 6 7 8

to_do

index

7

5

N 8

Swap

did_swap true

Page 36: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

981445 6 67 3323 42

1 2 3 4 5 6 7 8

to_do

index

7

5

N 8

Swap

did_swap true

Page 37: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

981445 6 67 3323 42

1 2 3 4 5 6 7 8

to_do

index

7

6

N 8 did_swap true

Page 38: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

981445 6 67 3323 42

1 2 3 4 5 6 7 8

to_do

index

7

6

N 8

Swap

did_swap true

Page 39: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

331445 6 67 9823 42

1 2 3 4 5 6 7 8

to_do

index

7

6

N 8

Swap

did_swap true

Page 40: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

331445 6 67 9823 42

1 2 3 4 5 6 7 8

to_do

index

7

7

N 8 did_swap true

Page 41: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

331445 6 67 9823 42

1 2 3 4 5 6 7 8

to_do

index

7

7

N 8

Swap

did_swap true

Page 42: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

An Animated Example

331445 6 67 4223 98

1 2 3 4 5 6 7 8

to_do

index

7

7

N 8

Swap

did_swap true

Page 43: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

After First Pass of Outer Loop

331445 6 67 4223 98

1 2 3 4 5 6 7 8

to_do

index

7

8

N 8

Finished first “Bubble Up”

did_swap true

Page 44: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Second “Bubble Up”

331445 6 67 4223 98

1 2 3 4 5 6 7 8

to_do

index

6

1

N 8 did_swap false

Page 45: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Second “Bubble Up”

331445 6 67 4223 98

1 2 3 4 5 6 7 8

to_do

index

6

1

N 8 did_swap false

No Swap

Page 46: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Second “Bubble Up”

331445 6 67 4223 98

1 2 3 4 5 6 7 8

to_do

index

6

2

N 8 did_swap false

Page 47: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Second “Bubble Up”

331445 6 67 4223 98

1 2 3 4 5 6 7 8

to_do

index

6

2

N 8 did_swap false

Swap

Page 48: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Second “Bubble Up”

334514 6 67 4223 98

1 2 3 4 5 6 7 8

to_do

index

6

2

N 8 did_swap true

Swap

Page 49: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Second “Bubble Up”

334514 6 67 4223 98

1 2 3 4 5 6 7 8

to_do

index

6

3

N 8 did_swap true

Page 50: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Second “Bubble Up”

334514 6 67 4223 98

1 2 3 4 5 6 7 8

to_do

index

6

3

N 8 did_swap true

Swap

Page 51: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Second “Bubble Up”

33614 45 67 4223 98

1 2 3 4 5 6 7 8

to_do

index

6

3

N 8 did_swap true

Swap

Page 52: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Second “Bubble Up”

33614 45 67 4223 98

1 2 3 4 5 6 7 8

to_do

index

6

4

N 8 did_swap true

Page 53: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Second “Bubble Up”

33614 45 67 4223 98

1 2 3 4 5 6 7 8

to_do

index

6

4

N 8 did_swap true

No Swap

Page 54: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Second “Bubble Up”

33614 45 67 4223 98

1 2 3 4 5 6 7 8

to_do

index

6

5

N 8 did_swap true

Page 55: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Second “Bubble Up”

33614 45 67 4223 98

1 2 3 4 5 6 7 8

to_do

index

6

5

N 8 did_swap true

Swap

Page 56: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Second “Bubble Up”

67614 45 33 4223 98

1 2 3 4 5 6 7 8

to_do

index

6

5

N 8 did_swap true

Swap

Page 57: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Second “Bubble Up”

67614 45 33 4223 98

1 2 3 4 5 6 7 8

to_do

index

6

6

N 8 did_swap true

Page 58: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Second “Bubble Up”

67614 45 33 4223 98

1 2 3 4 5 6 7 8

to_do

index

6

6

N 8 did_swap true

Swap

Page 59: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Second “Bubble Up”

42614 45 33 6723 98

1 2 3 4 5 6 7 8

to_do

index

6

6

N 8 did_swap true

Swap

Page 60: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

After Second Pass of Outer Loop

42614 45 33 6723 98

1 2 3 4 5 6 7 8

to_do

index

6

7

N 8 did_swap true

Finished second “Bubble Up”

Page 61: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Third “Bubble Up”

42614 45 33 6723 98

1 2 3 4 5 6 7 8

to_do

index

5

1

N 8 did_swap false

Page 62: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Third “Bubble Up”

42614 45 33 6723 98

1 2 3 4 5 6 7 8

to_do

index

5

1

N 8 did_swap false

Swap

Page 63: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Third “Bubble Up”

42623 45 33 6714 98

1 2 3 4 5 6 7 8

to_do

index

5

1

N 8 did_swap true

Swap

Page 64: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Third “Bubble Up”

42623 45 33 6714 98

1 2 3 4 5 6 7 8

to_do

index

5

2

N 8 did_swap true

Page 65: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Third “Bubble Up”

42623 45 33 6714 98

1 2 3 4 5 6 7 8

to_do

index

5

2

N 8 did_swap true

Swap

Page 66: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Third “Bubble Up”

42236 45 33 6714 98

1 2 3 4 5 6 7 8

to_do

index

5

2

N 8 did_swap true

Swap

Page 67: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Third “Bubble Up”

42236 45 33 6714 98

1 2 3 4 5 6 7 8

to_do

index

5

3

N 8 did_swap true

Page 68: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Third “Bubble Up”

42236 45 33 6714 98

1 2 3 4 5 6 7 8

to_do

index

5

3

N 8 did_swap true

No Swap

Page 69: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Third “Bubble Up”

42236 45 33 6714 98

1 2 3 4 5 6 7 8

to_do

index

5

4

N 8 did_swap true

Page 70: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Third “Bubble Up”

42236 45 33 6714 98

1 2 3 4 5 6 7 8

to_do

index

5

4

N 8 did_swap true

Swap

Page 71: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Third “Bubble Up”

42236 33 45 6714 98

1 2 3 4 5 6 7 8

to_do

index

5

4

N 8 did_swap true

Swap

Page 72: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Third “Bubble Up”

42236 33 45 6714 98

1 2 3 4 5 6 7 8

to_do

index

5

5

N 8 did_swap true

Page 73: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Third “Bubble Up”

42236 33 45 6714 98

1 2 3 4 5 6 7 8

to_do

index

5

5

N 8 did_swap true

Swap

Page 74: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Third “Bubble Up”

45236 33 42 6714 98

1 2 3 4 5 6 7 8

to_do

index

5

5

N 8 did_swap true

Swap

Page 75: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

After Third Pass of Outer Loop

45236 33 42 6714 98

1 2 3 4 5 6 7 8

to_do

index

5

6

N 8 did_swap true

Finished third “Bubble Up”

Page 76: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Fourth “Bubble Up”

45236 33 42 6714 98

1 2 3 4 5 6 7 8

to_do

index

4

1

N 8 did_swap false

Page 77: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Fourth “Bubble Up”

45236 33 42 6714 98

1 2 3 4 5 6 7 8

to_do

index

4

1

N 8 did_swap false

Swap

Page 78: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Fourth “Bubble Up”

452314 33 42 676 98

1 2 3 4 5 6 7 8

to_do

index

4

1

N 8 did_swap true

Swap

Page 79: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Fourth “Bubble Up”

452314 33 42 676 98

1 2 3 4 5 6 7 8

to_do

index

4

2

N 8 did_swap true

Page 80: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Fourth “Bubble Up”

452314 33 42 676 98

1 2 3 4 5 6 7 8

to_do

index

4

2

N 8 did_swap true

No Swap

Page 81: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Fourth “Bubble Up”

452314 33 42 676 98

1 2 3 4 5 6 7 8

to_do

index

4

3

N 8 did_swap true

Page 82: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Fourth “Bubble Up”

452314 33 42 676 98

1 2 3 4 5 6 7 8

to_do

index

4

3

N 8 did_swap true

No Swap

Page 83: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Fourth “Bubble Up”

452314 33 42 676 98

1 2 3 4 5 6 7 8

to_do

index

4

4

N 8 did_swap true

Page 84: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Fourth “Bubble Up”

452314 33 42 676 98

1 2 3 4 5 6 7 8

to_do

index

4

4

N 8 did_swap true

No Swap

Page 85: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

After Fourth Pass of Outer Loop

452314 33 42 676 98

1 2 3 4 5 6 7 8

to_do

index

4

5

N 8 did_swap true

Finished fourth “Bubble Up”

Page 86: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Fifth “Bubble Up”

452314 33 42 676 98

1 2 3 4 5 6 7 8

to_do

index

3

1

N 8 did_swap false

Page 87: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Fifth “Bubble Up”

452314 33 42 676 98

1 2 3 4 5 6 7 8

to_do

index

3

1

N 8 did_swap false

No Swap

Page 88: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Fifth “Bubble Up”

452314 33 42 676 98

1 2 3 4 5 6 7 8

to_do

index

3

2

N 8 did_swap false

Page 89: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Fifth “Bubble Up”

452314 33 42 676 98

1 2 3 4 5 6 7 8

to_do

index

3

2

N 8 did_swap false

No Swap

Page 90: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Fifth “Bubble Up”

452314 33 42 676 98

1 2 3 4 5 6 7 8

to_do

index

3

3

N 8 did_swap false

Page 91: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

The Fifth “Bubble Up”

452314 33 42 676 98

1 2 3 4 5 6 7 8

to_do

index

3

3

N 8 did_swap false

No Swap

Page 92: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

After Fifth Pass of Outer Loop

452314 33 42 676 98

1 2 3 4 5 6 7 8

to_do

index

3

4

N 8 did_swap false

Finished fifth “Bubble Up”

Page 93: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

Finished “Early”

452314 33 42 676 98

1 2 3 4 5 6 7 8

to_do

index

3

4

N 8 did_swap false

We didn’t do any swapping,so all of the other elementsmust be correctly placed.

We can “skip” the last twopasses of the outer loop.

Page 94: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

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

Page 95: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

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

Page 96: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

Mergesort

Page 97: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

Sorting

• Sorting takes an unordered collection and makes it an ordered one.

512354277 101

5 12 35 42 77 101

Page 98: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

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

Page 99: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

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-array's 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

Page 100: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

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)

Page 101: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

Page 102: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

Page 103: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

Page 104: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398

Page 105: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398

Merge

Page 106: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398

23

Merge

Page 107: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398

23 98

Merge

Page 108: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

23 98

Page 109: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

23 98

Page 110: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

14

Merge

23 98

Page 111: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

45

Merge

23 98 14

Page 112: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

98 451423

Page 113: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

98 14

14

23 45

Page 114: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

23 14

14 23

98 45

Page 115: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

23 98 4514

14 23 45

Page 116: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

23 98 4514

14 23 45 98

Page 117: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

23 98 4514

14 23 45 98

Page 118: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676

23 98 4514

14 23 45 98

Page 119: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676

Merge

23 98 4514

14 23 45 98

Page 120: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676

6

Merge

23 98 4514

14 23 45 98

Page 121: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676

67

Merge

23 98 4514 6

14 23 45 98

Page 122: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

23 98 4514 676

14 23 45 98

Page 123: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676

14 23 45 98

Page 124: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

3323 98 4514 676

14 23 45 98

Page 125: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

4223 98 4514 676 33

14 23 45 98

Page 126: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 23 45 98

Page 127: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 6 4233

14 23 45 98 6

67

Page 128: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 6 33

14 23 45 98 6 33

67 42

Page 129: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 6 4233

14 23 45 98 6 33 42

67

Page 130: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 23 45 98 6 33 42 67

Page 131: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

23 45 98 33 42 6714 6

Page 132: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

23 45 98 6 42 67

6

14 33

Page 133: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 45 98 6 42 67

6 14

23 33

Page 134: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 23 98 6 42 67

6 14 23

45 33

Page 135: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 23 98 6 33 67

6 14 23 33

45 42

Page 136: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 23 98 6 33 42

6 14 23 33 42

45 67

Page 137: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 23 45 6 33 42

6 14 23 33 42 45

98 67

Page 138: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 23 45 98 6 33 42 67

6 14 23 33 42 45 67

Page 139: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 23 45 98 6 33 42 67

6 14 23 33 42 45 67 98

Page 140: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

23 98 4514 676 4233

14 23 45 98 6 33 42 67

6 14 23 33 42 45 67 98

Page 141: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

674523 14 6 3398 42

6 14 23 33 42 45 67 98

Page 142: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

Summary• Divide the unsorted collection into two • Until the sub-arrays only contain one element

• Then merge the sub-problem solutions together

Page 143: CS1022 Computer Programming & Principles Lecture 2.2 Algorithms

Summary: what you now know

• Some examples of sorting using algorithms.• Some issues about how long they might be.• Some intuitions about correctness• Thanks to Leahy and Smith (2000)

143

CS1022