Bubble Sort
Prepared By:
Rao Muhammad Salman
MCS
The Islamia University BahawalPur(Pakistan)
Sorting
• Sorting takes an unordered collection and
makes it an ordered one.
1 2 3 4 5 6 7 8
674523 14 6 3398 42
1 2 3 4 5 6 7 8
452314 33 42 676 98
"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 7 8
674523 14 6 3398 42
"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
Swap
1 2 3 4 5 6 7 8
674598 14 6 3323 42
Value swapped
"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
Swap
1 2 3 4 5 6 7 8
679845 14 6 3323 42
Value swapped
"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
Swap
1 2 3 4 5 6 7 8
671445 98 6 3323 42
Value swapped
"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
Value swapped
Swap
1 2 3 4 5 6 7 8
671445 6 98 3323 42
"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
Swap
1 2 3 4 5 6 7 8
981445 6 67 3323 42
Value swapped
"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
Swap
1 2 3 4 5 6 7 8
331445 6 67 9823 42
Value swapped
"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
Swap
1 2 3 4 5 6 7 8
331445 6 67 4223 98
Value swapped
"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
Largest value correctly placed
1 2 3 4 5 6 7 8
331445 6 67 4223 98
The “Bubble Up” Algorithm
index <- 1
last_compare_at <- n – 1
loopouter
exitif(index > last_compare_at)
Loopinner
to_do<-0
exitif(to_do > index)
if(A[to_do] > A[to_do + 1]) then
Swap(A[to_do], A[to_do + 1])
endif
to_do<- to_do + 1
endloopinner
index <- index - 1
endloopouter
No, Swap isn’t built in.
Procedure Swap(a, b isoftype in/out Num)
temp isoftype Num
temp <- a
a <- b
b <- temp
endprocedure // Swap
Bubble Sort Code
void bubble_sort( int data[ ], int size)
{
int outer, inner,temp;
for(outer = size-1; outer =>0; --outer)
{
for(inner = 0; inner < outer;++inner)
if(data[inner] > data[inner+1])
{
temp = data[inner];
data[inner] = data[inner+1];
data[inner+1] = temp;
}
}
}
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
Largest value correctly placed
1 2 3 4 5 6 7 8
331445 6 67 4223 98
Repeat “Bubble Up” How Many Times?
• If we have N elements…
• And if each time we bubble an element, we
place it in its largest correct location…
• Then we repeat InnerLoop the “bubble up”
process OuterLoop – 1 times.
• This guarantees we’ll correctly
place all N elements.
Dry Run
674523 14 6 3398 42
1 2 3 4 5 6 7 8
to_do
index
7
N 8 did_swap true
The First “Bubble Up”
674523 14 6 3398 42
1 2 3 4 5 6 7 8
to_do
index
7
1
N 8 did_swap false
The First “Bubble Up”
The First “Bubble Up”
674523 14 6 3398 42
1 2 3 4 5 6 7 8
to_do
index
7
1
N 8
Swap
did_swap false
The First “Bubble Up”
674598 14 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
1
N 8
Swap
did_swap true
The First “Bubble Up”
674598 14 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
2
N 8 did_swap true
The First “Bubble Up”
674598 14 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
2
N 8
Swap
did_swap true
The First “Bubble Up”
679845 14 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
2
N 8
Swap
did_swap true
The First “Bubble Up”
679845 14 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
3
N 8 did_swap true
The First “Bubble Up”
679845 14 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
3
N 8
Swap
did_swap true
The First “Bubble Up”
671445 98 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
3
N 8
Swap
did_swap true
The First “Bubble Up”
671445 98 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
4
N 8 did_swap true
The First “Bubble Up”
671445 98 6 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
4
N 8
Swap
did_swap true
The First “Bubble Up”
671445 6 98 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
4
N 8
Swap
did_swap true
The First “Bubble Up”
671445 6 98 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
5
N 8 did_swap true
The First “Bubble Up”
671445 6 98 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
5
N 8
Swap
did_swap true
The First “Bubble Up”
981445 6 67 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
5
N 8
Swap
did_swap true
The First “Bubble Up”
981445 6 67 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
6
N 8 did_swap true
The First “Bubble Up”
981445 6 67 3323 42
1 2 3 4 5 6 7 8
to_do
index
7
6
N 8
Swap
did_swap true
The First “Bubble Up”
331445 6 67 9823 42
1 2 3 4 5 6 7 8
to_do
index
7
6
N 8
Swap
did_swap true
The First “Bubble Up”
331445 6 67 9823 42
1 2 3 4 5 6 7 8
to_do
index
7
7
N 8 did_swap true
The First “Bubble Up”
331445 6 67 9823 42
1 2 3 4 5 6 7 8
to_do
index
7
7
N 8
Swap
did_swap true
The First “Bubble Up”
331445 6 67 4223 98
1 2 3 4 5 6 7 8
to_do
index
7
7
N 8 did_swap true
Finished 1st “Bubble Up”
No Swap
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Finished 2nd “Bubble Up”
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Finished 3rd “Bubble Up”
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
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
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
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
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
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
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
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
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
Finished 4th “Bubble Up”
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
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
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
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
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
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
Finished 5th “Bubble Up”
The Sixth “Bubble Up”
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
2
1
N 8 did_swap false
The Sixth “Bubble Up”
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
2
1
N 8 did_swap false
No Swap
The Sixth “Bubble Up”
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
2
2
N 8 did_swap false
The Sixth “Bubble Up”
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
2
2
N 8 did_swap false
No Swap
Finished 6th “Bubble Up”
The Seventh “Bubble Up”
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
1
1
N 8 did_swap false
The Seventh “Bubble Up”
452314 33 42 676 98
1 2 3 4 5 6 7 8
to_do
index
1
1
N 8 did_swap false
No Swap
Finished 7th “Bubble Up”
Sorted Elements
452314 33 42 676 98
1 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
Bubble sort

Bubble sort

  • 1.
    Bubble Sort Prepared By: RaoMuhammad Salman MCS The Islamia University BahawalPur(Pakistan)
  • 2.
    Sorting • Sorting takesan unordered collection and makes it an ordered one. 1 2 3 4 5 6 7 8 674523 14 6 3398 42 1 2 3 4 5 6 7 8 452314 33 42 676 98
  • 3.
    "Bubbling Up" theLargest 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 7 8 674523 14 6 3398 42
  • 4.
    "Bubbling Up" theLargest 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 Swap 1 2 3 4 5 6 7 8 674598 14 6 3323 42 Value swapped
  • 5.
    "Bubbling Up" theLargest 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 Swap 1 2 3 4 5 6 7 8 679845 14 6 3323 42 Value swapped
  • 6.
    "Bubbling Up" theLargest 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 Swap 1 2 3 4 5 6 7 8 671445 98 6 3323 42 Value swapped
  • 7.
    "Bubbling Up" theLargest 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 Value swapped Swap 1 2 3 4 5 6 7 8 671445 6 98 3323 42
  • 8.
    "Bubbling Up" theLargest 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 Swap 1 2 3 4 5 6 7 8 981445 6 67 3323 42 Value swapped
  • 9.
    "Bubbling Up" theLargest 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 Swap 1 2 3 4 5 6 7 8 331445 6 67 9823 42 Value swapped
  • 10.
    "Bubbling Up" theLargest 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 Swap 1 2 3 4 5 6 7 8 331445 6 67 4223 98 Value swapped
  • 11.
    "Bubbling Up" theLargest 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 Largest value correctly placed 1 2 3 4 5 6 7 8 331445 6 67 4223 98
  • 12.
    The “Bubble Up”Algorithm index <- 1 last_compare_at <- n – 1 loopouter exitif(index > last_compare_at) Loopinner to_do<-0 exitif(to_do > index) if(A[to_do] > A[to_do + 1]) then Swap(A[to_do], A[to_do + 1]) endif to_do<- to_do + 1 endloopinner index <- index - 1 endloopouter
  • 13.
    No, Swap isn’tbuilt in. Procedure Swap(a, b isoftype in/out Num) temp isoftype Num temp <- a a <- b b <- temp endprocedure // Swap
  • 14.
    Bubble Sort Code voidbubble_sort( int data[ ], int size) { int outer, inner,temp; for(outer = size-1; outer =>0; --outer) { for(inner = 0; inner < outer;++inner) if(data[inner] > data[inner+1]) { temp = data[inner]; data[inner] = data[inner+1]; data[inner+1] = temp; } } }
  • 15.
    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 Largest value correctly placed 1 2 3 4 5 6 7 8 331445 6 67 4223 98
  • 16.
    Repeat “Bubble Up”How Many Times? • If we have N elements… • And if each time we bubble an element, we place it in its largest correct location… • Then we repeat InnerLoop the “bubble up” process OuterLoop – 1 times. • This guarantees we’ll correctly place all N elements.
  • 17.
  • 18.
    674523 14 63398 42 1 2 3 4 5 6 7 8 to_do index 7 N 8 did_swap true The First “Bubble Up”
  • 19.
    674523 14 63398 42 1 2 3 4 5 6 7 8 to_do index 7 1 N 8 did_swap false The First “Bubble Up”
  • 20.
    The First “BubbleUp” 674523 14 6 3398 42 1 2 3 4 5 6 7 8 to_do index 7 1 N 8 Swap did_swap false
  • 21.
    The First “BubbleUp” 674598 14 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 1 N 8 Swap did_swap true
  • 22.
    The First “BubbleUp” 674598 14 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 2 N 8 did_swap true
  • 23.
    The First “BubbleUp” 674598 14 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 2 N 8 Swap did_swap true
  • 24.
    The First “BubbleUp” 679845 14 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 2 N 8 Swap did_swap true
  • 25.
    The First “BubbleUp” 679845 14 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 3 N 8 did_swap true
  • 26.
    The First “BubbleUp” 679845 14 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 3 N 8 Swap did_swap true
  • 27.
    The First “BubbleUp” 671445 98 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 3 N 8 Swap did_swap true
  • 28.
    The First “BubbleUp” 671445 98 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 4 N 8 did_swap true
  • 29.
    The First “BubbleUp” 671445 98 6 3323 42 1 2 3 4 5 6 7 8 to_do index 7 4 N 8 Swap did_swap true
  • 30.
    The First “BubbleUp” 671445 6 98 3323 42 1 2 3 4 5 6 7 8 to_do index 7 4 N 8 Swap did_swap true
  • 31.
    The First “BubbleUp” 671445 6 98 3323 42 1 2 3 4 5 6 7 8 to_do index 7 5 N 8 did_swap true
  • 32.
    The First “BubbleUp” 671445 6 98 3323 42 1 2 3 4 5 6 7 8 to_do index 7 5 N 8 Swap did_swap true
  • 33.
    The First “BubbleUp” 981445 6 67 3323 42 1 2 3 4 5 6 7 8 to_do index 7 5 N 8 Swap did_swap true
  • 34.
    The First “BubbleUp” 981445 6 67 3323 42 1 2 3 4 5 6 7 8 to_do index 7 6 N 8 did_swap true
  • 35.
    The First “BubbleUp” 981445 6 67 3323 42 1 2 3 4 5 6 7 8 to_do index 7 6 N 8 Swap did_swap true
  • 36.
    The First “BubbleUp” 331445 6 67 9823 42 1 2 3 4 5 6 7 8 to_do index 7 6 N 8 Swap did_swap true
  • 37.
    The First “BubbleUp” 331445 6 67 9823 42 1 2 3 4 5 6 7 8 to_do index 7 7 N 8 did_swap true
  • 38.
    The First “BubbleUp” 331445 6 67 9823 42 1 2 3 4 5 6 7 8 to_do index 7 7 N 8 Swap did_swap true
  • 39.
    The First “BubbleUp” 331445 6 67 4223 98 1 2 3 4 5 6 7 8 to_do index 7 7 N 8 did_swap true Finished 1st “Bubble Up” No Swap
  • 40.
    The Second “BubbleUp” 331445 6 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 1 N 8 did_swap false
  • 41.
    The Second “BubbleUp” 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
  • 42.
    The Second “BubbleUp” 331445 6 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 2 N 8 did_swap false
  • 43.
    The Second “BubbleUp” 331445 6 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 2 N 8 did_swap false Swap
  • 44.
    The Second “BubbleUp” 334514 6 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 2 N 8 did_swap true Swap
  • 45.
    The Second “BubbleUp” 334514 6 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 3 N 8 did_swap true
  • 46.
    The Second “BubbleUp” 334514 6 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 3 N 8 did_swap true Swap
  • 47.
    The Second “BubbleUp” 33614 45 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 3 N 8 did_swap true Swap
  • 48.
    The Second “BubbleUp” 33614 45 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 4 N 8 did_swap true
  • 49.
    The Second “BubbleUp” 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
  • 50.
    The Second “BubbleUp” 33614 45 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 5 N 8 did_swap true
  • 51.
    The Second “BubbleUp” 33614 45 67 4223 98 1 2 3 4 5 6 7 8 to_do index 6 5 N 8 did_swap true Swap
  • 52.
    The Second “BubbleUp” 67614 45 33 4223 98 1 2 3 4 5 6 7 8 to_do index 6 5 N 8 did_swap true Swap
  • 53.
    The Second “BubbleUp” 67614 45 33 4223 98 1 2 3 4 5 6 7 8 to_do index 6 6 N 8 did_swap true
  • 54.
    The Second “BubbleUp” 42614 45 33 6723 98 1 2 3 4 5 6 7 8 to_do index 6 6 N 8 did_swap true Swap
  • 55.
    The Second “BubbleUp” 42614 45 33 6723 98 1 2 3 4 5 6 7 8 to_do index 6 6 N 8 did_swap true Swap Finished 2nd “Bubble Up”
  • 56.
    The Third “BubbleUp” 42614 45 33 6723 98 1 2 3 4 5 6 7 8 to_do index 5 1 N 8 did_swap false
  • 57.
    The Third “BubbleUp” 42614 45 33 6723 98 1 2 3 4 5 6 7 8 to_do index 5 1 N 8 did_swap false Swap
  • 58.
    The Third “BubbleUp” 42623 45 33 6714 98 1 2 3 4 5 6 7 8 to_do index 5 1 N 8 did_swap true Swap
  • 59.
    The Third “BubbleUp” 42623 45 33 6714 98 1 2 3 4 5 6 7 8 to_do index 5 2 N 8 did_swap true
  • 60.
    The Third “BubbleUp” 42623 45 33 6714 98 1 2 3 4 5 6 7 8 to_do index 5 2 N 8 did_swap true Swap
  • 61.
    The Third “BubbleUp” 42236 45 33 6714 98 1 2 3 4 5 6 7 8 to_do index 5 2 N 8 did_swap true Swap
  • 62.
    The Third “BubbleUp” 42236 45 33 6714 98 1 2 3 4 5 6 7 8 to_do index 5 3 N 8 did_swap true
  • 63.
    The Third “BubbleUp” 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
  • 64.
    The Third “BubbleUp” 42236 45 33 6714 98 1 2 3 4 5 6 7 8 to_do index 5 4 N 8 did_swap true
  • 65.
    The Third “BubbleUp” 42236 45 33 6714 98 1 2 3 4 5 6 7 8 to_do index 5 4 N 8 did_swap true Swap
  • 66.
    The Third “BubbleUp” 42236 33 45 6714 98 1 2 3 4 5 6 7 8 to_do index 5 4 N 8 did_swap true Swap
  • 67.
    The Third “BubbleUp” 42236 33 45 6714 98 1 2 3 4 5 6 7 8 to_do index 5 5 N 8 did_swap true
  • 68.
    The Third “BubbleUp” 42236 33 45 6714 98 1 2 3 4 5 6 7 8 to_do index 5 5 N 8 did_swap true Swap
  • 69.
    The Third “BubbleUp” 45236 33 42 6714 98 1 2 3 4 5 6 7 8 to_do index 5 5 N 8 did_swap true Swap Finished 3rd “Bubble Up”
  • 70.
    The Fourth “BubbleUp” 45236 33 42 6714 98 1 2 3 4 5 6 7 8 to_do index 4 1 N 8 did_swap false
  • 71.
    The Fourth “BubbleUp” 45236 33 42 6714 98 1 2 3 4 5 6 7 8 to_do index 4 1 N 8 did_swap false Swap
  • 72.
    The Fourth “BubbleUp” 452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 4 1 N 8 did_swap true Swap
  • 73.
    The Fourth “BubbleUp” 452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 4 2 N 8 did_swap true
  • 74.
    The Fourth “BubbleUp” 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
  • 75.
    The Fourth “BubbleUp” 452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 4 3 N 8 did_swap true
  • 76.
    The Fourth “BubbleUp” 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
  • 77.
    The Fourth “BubbleUp” 452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 4 4 N 8 did_swap true
  • 78.
    The Fourth “BubbleUp” 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 Finished 4th “Bubble Up”
  • 79.
    The Fifth “BubbleUp” 452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 3 1 N 8 did_swap false
  • 80.
    The Fifth “BubbleUp” 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
  • 81.
    The Fifth “BubbleUp” 452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 3 2 N 8 did_swap false
  • 82.
    The Fifth “BubbleUp” 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
  • 83.
    The Fifth “BubbleUp” 452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 3 3 N 8 did_swap false
  • 84.
    The Fifth “BubbleUp” 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 Finished 5th “Bubble Up”
  • 85.
    The Sixth “BubbleUp” 452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 2 1 N 8 did_swap false
  • 86.
    The Sixth “BubbleUp” 452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 2 1 N 8 did_swap false No Swap
  • 87.
    The Sixth “BubbleUp” 452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 2 2 N 8 did_swap false
  • 88.
    The Sixth “BubbleUp” 452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 2 2 N 8 did_swap false No Swap Finished 6th “Bubble Up”
  • 89.
    The Seventh “BubbleUp” 452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 1 1 N 8 did_swap false
  • 90.
    The Seventh “BubbleUp” 452314 33 42 676 98 1 2 3 4 5 6 7 8 to_do index 1 1 N 8 did_swap false No Swap Finished 7th “Bubble Up”
  • 91.
    Sorted Elements 452314 3342 676 98 1 2 3 4 5 6 7 8
  • 92.
    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