Complete-Preparation

πŸŽ‰ One-stop destination for all your technical interview Preparation πŸŽ‰

View the Project on GitHub

Bubble Sort Algorithm

Bubble Sort

Code

void bubbleSort(vector<int>& v)
{
    int n = v.size();
    for (int i = 0; i < n - 1; i++) { // till n-1
        // Last i elements are already in place
        for (int j = 0; j < n - i - 1; j++) { // till n-i-1
            if (v[j] > v[j + 1]) {
                swap(v[j], v[j + 1]);
            }
        }
    }
}

Optimization

Code

void bubbleSort(vector<int>& v)
{
    int n = v.size();
    bool swapped = false;
    for (int i = 0; i < n; i++) {
        swapped = false;
        for (int j = 0; j < n - 1 - i; j++) {
            if (v[j] > v[j + 1]) {
                swap(v[j], v[j + 1]);
                swapped = true;
            }
        }
        if (!swapped) {
            break;
        }
    }
}

Analysis

Uses:

Reference


Recursive Bubble Sort

void bubbleSort(vector<int>& v, int n)
{
    // Recursive bubble sort
    if (n == 1)
        return;
    bool swapped = false;
    for (int i = 0; i < n - 1; i++) {
        if (v[i] > v[i + 1]) {
            swap(v[i], v[i + 1]);
            swapped = true;
        }
    }
    if (!swapped)
        return;
    bubbleSort(v, n - 1);
}