C++ Program for Recursive Bubble Sort
Background : Bubble Sort is the simplest sorting algorithm that works by repeatedly swapping the adjacent elements if they are in wrong order. Following is iterative Bubble sort algorithm :
// Iterative Bubble Sort bubbleSort(arr[], n) { for (i = 0; i n-1; i++) // Last i elements are already in place for (j = 0; j < n-i-1; j++) swap(arr[j], arr[j+1]); }
Recursion Idea.
- Base Case: If array size is 1, return.
- Do One Pass of normal Bubble Sort. This pass fixes last element of current subarray.
- Recur for all elements except last of current subarray.
C/C++
CPP
// C/C++ program for recursive implementation // of Bubble sort #include <bits/stdc++.h> using namespace std; // A function to implement bubble sort void bubbleSort( int arr[], int n) { // Base case if (n == 1) return ; // One pass of bubble sort. After // this pass, the largest element // is moved (or bubbled) to end. for ( int i=0; i<n-1; i++) if (arr[i] > arr[i+1]) swap(arr[i], arr[i+1]); // Largest element is fixed, // recur for remaining array bubbleSort(arr, n-1); } /* Function to print an array */ void printArray( int arr[], int n) { for ( int i=0; i < n; i++) printf ( "%d " , arr[i]); printf ( "\n" ); } // Driver program to test above functions int main() { int arr[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof (arr)/ sizeof (arr[0]); bubbleSort(arr, n); printf ( "Sorted array : \n" ); printArray(arr, n); return 0; } |
Time Complexity: O(n*n)
Auxiliary Space: O(1)
Please refer complete article on Recursive Bubble Sort for more details!
Please Login to comment...