cs101-notes
  • CS 101 Notes
  • Big O Notation
  • Big O Cheat Sheet
  • Sorting
    • Summary
    • Bubble Sort
    • Selection Sort
    • Insertion Sort
    • Merge Sort
    • Quick Sort
  • Abstract Data Types
    • Linked List
    • Stack
    • Queue
    • Hash Maps
    • Minimum Ordered Heap
Powered by GitBook
On this page

Was this helpful?

  1. Sorting

Bubble Sort

PreviousSummaryNextSelection Sort

Last updated 5 years ago

Was this helpful?

Simplest Version

template <typename eType>
void bubbleSort(int vector<eType> arr, int size) {
  int i, j, tmp;
  for (j = 1; j < size; j++) {
    for (i = 0; i < size - j; i++)
      if (arr[i] > arr[i + 1]) {
        tmp = arr[i];
        arr[i] = arr[i + 1];
        arr[i + 1] = tmp;
      }
  }
}

Best Case Friendly Version

template <typename eType>
void bubbleSort(int vector<eType> arr, int size) {
  int i, j, tmp;
  for (j = 1; j < size; j++) {
    bool flag = false;
    for (i = 0; i < size - j; i++)
      if (arr[i] > arr[i + 1]) {
        tmp = arr[i];
        arr[i] = arr[i + 1];
        arr[i + 1] = tmp;
        flag = true;
      }
    if (!flag) break;
  }
}

Worst case complexity:

(N−1)+(N−2)+(N−3)…+1=∑i=1N−1i=N⋅(N−1)2=O(N2)(\mathrm{N}-1)+(\mathrm{N}-2)+(\mathrm{N}-3) \ldots+1=\sum_{i=1}^{N-1} i =\frac{N \cdot(N-1)}{2}=\mathrm{O}\left(\mathrm{N}^{2}\right)(N−1)+(N−2)+(N−3)…+1=i=1∑N−1​i=2N⋅(N−1)​=O(N2)

Bubble Sort Visualization