C++ Program to Perform the Shaker Sort

Shaker sort is used to sort the given data. Shaker sort, unlike Bubble sort, orders the array in both directions. The worst complexity of this algorithm is O(n^2).


   ShakerSort() function has ‘arr’ the array of data and ‘n’ the number of values, in the argument list.
   // Implement Sorting algorithm using nested for loops.
   The parent loop will run on ‘i’ from 0 to n-1 and contains two loops inside.
   The first loop will run on ‘j’ from i+1 to n-1 and use swap() if a[j] < a[j-1].
   Decrement n.
   The second loop will run on 'k' from m-1 to i+1 and use swap() if a[k] < a[k-1].
   Increment i.

Example Code

using namespace std;
void swap(int *a, int *b) {
   int temp;
   temp = *a;
   *a = *b;
   *b = temp;
void ShakerSort(int a[], int m) {
   int i, j, k;
   for(i = 0; i < m;) {
      for(j = i+1; j < m; j++) {
         if(a[j] < a[j-1])
            swap(&a[j], &a[j-1]);
      for(k = m-1; k > i; k--) {
         if(a[k] < a[k-1])
            swap(&a[k], &a[k-1]);
int main() {
   int n, i;
   cout<<"\nEnter the number of data element to be sorted: ";
   int a[n];
   for(i = 0; i < n; i++) {
      cout<<"Enter element "<<i+1<<": ";
   ShakerSort(a, n);
   cout<<"\nSorted Data ";
   for (i = 0; i < n; i++)
   return 0;


Enter the number of data element to be sorted: 4
Enter element 1: 3
Enter element 2: 1
Enter element 3: 7
Enter element 4: 6
Sorted Data ->1->3->6->7

Updated on: 30-Jul-2019

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started