Bubble sort

1,611 views
1,468 views

Published on

Bubble Sort Complete Description with algorithm, coding and step by step dry run.

Published in: Education, Technology, Business
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,611
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
105
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Bubble sort

  1. 1. Bubble Sort Prepared By: Rao Muhammad Salman MCS The Islamia University BahawalPur(Pakistan)
  2. 2. 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
  3. 3. "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
  4. 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 Swap 1 2 3 4 5 6 7 8 674598 14 6 3323 42 Value swapped
  5. 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 Swap 1 2 3 4 5 6 7 8 679845 14 6 3323 42 Value swapped
  6. 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 Swap 1 2 3 4 5 6 7 8 671445 98 6 3323 42 Value swapped
  7. 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 Value swapped Swap 1 2 3 4 5 6 7 8 671445 6 98 3323 42
  8. 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 Swap 1 2 3 4 5 6 7 8 981445 6 67 3323 42 Value swapped
  9. 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 Swap 1 2 3 4 5 6 7 8 331445 6 67 9823 42 Value swapped
  10. 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 Swap 1 2 3 4 5 6 7 8 331445 6 67 4223 98 Value swapped
  11. 11. "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
  12. 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. 13. 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
  14. 14. 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; } } }
  15. 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. 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. 17. Dry Run
  18. 18. 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”
  19. 19. 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”
  20. 20. 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
  21. 21. 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
  22. 22. 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
  23. 23. 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
  24. 24. 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
  25. 25. 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
  26. 26. 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
  27. 27. 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
  28. 28. 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
  29. 29. 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
  30. 30. 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
  31. 31. 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
  32. 32. 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
  33. 33. 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
  34. 34. 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
  35. 35. 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
  36. 36. 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
  37. 37. 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
  38. 38. 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
  39. 39. 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
  40. 40. 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
  41. 41. 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
  42. 42. 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
  43. 43. 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
  44. 44. 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
  45. 45. 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
  46. 46. 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
  47. 47. 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
  48. 48. 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
  49. 49. 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
  50. 50. 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
  51. 51. 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
  52. 52. 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
  53. 53. 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
  54. 54. 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
  55. 55. 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”
  56. 56. 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
  57. 57. 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
  58. 58. 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
  59. 59. 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
  60. 60. 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
  61. 61. 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
  62. 62. 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
  63. 63. 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
  64. 64. 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
  65. 65. 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
  66. 66. 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
  67. 67. 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
  68. 68. 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
  69. 69. 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”
  70. 70. 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
  71. 71. 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
  72. 72. 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
  73. 73. 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
  74. 74. 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
  75. 75. 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
  76. 76. 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
  77. 77. 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
  78. 78. 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”
  79. 79. 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
  80. 80. 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
  81. 81. 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
  82. 82. 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
  83. 83. 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
  84. 84. 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”
  85. 85. 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
  86. 86. 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
  87. 87. 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
  88. 88. 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”
  89. 89. 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
  90. 90. 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”
  91. 91. Sorted Elements 452314 33 42 676 98 1 2 3 4 5 6 7 8
  92. 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

×