C++ Program for Cocktail Sort Last Updated : 13 Jun, 2022 Comments Improve Suggest changes Like Article Like Report Cocktail Sort is a variation of Bubble sort. The Bubble sort algorithm always traverses elements from left and moves the largest element to its correct position in first iteration and second largest in second iteration and so on. Cocktail Sort traverses through a given array in both directions alternatively. Algorithm: Each iteration of the algorithm is broken up into 2 stages: The first stage loops through the array from left to right, just like the Bubble Sort. During the loop, adjacent items are compared and if value on the left is greater than the value on the right, then values are swapped. At the end of first iteration, largest number will reside at the end of the array.The second stage loops through the array in opposite direction- starting from the item just before the most recently sorted item, and moving back to the start of the array. Here also, adjacent items are compared and are swapped if required. CPP // C++ implementation of Cocktail Sort #include <bits/stdc++.h> using namespace std; // Sorts array a[0..n-1] using Cocktail sort void CocktailSort(int a[], int n) { bool swapped = true; int start = 0; int end = n - 1; while (swapped) { // reset the swapped flag on entering // the loop, because it might be true from // a previous iteration. swapped = false; // loop from left to right same as // the bubble sort for (int i = start; i < end; ++i) { if (a[i] > a[i + 1]) { swap(a[i], a[i + 1]); swapped = true; } } // if nothing moved, then array is sorted. if (!swapped) break; // otherwise, reset the swapped flag so that it // can be used in the next stage swapped = false; // move the end point back by one, because // item at the end is in its rightful spot --end; // from right to left, doing the // same comparison as in the previous stage for (int i = end - 1; i >= start; --i) { if (a[i] > a[i + 1]) { swap(a[i], a[i + 1]); swapped = true; } } // increase the starting point, because // the last stage would have moved the next // smallest number to its rightful spot. ++start; } } /* Prints the array */ void printArray(int a[], int n) { for (int i = 0; i < n; i++) printf("%d ", a[i]); printf("\n"); } // Driver code int main() { int arr[] = { 5, 1, 4, 2, 8, 0, 2 }; int n = sizeof(arr) / sizeof(arr[0]); CocktailSort(arr, n); printf("Sorted array :\n"); printArray(arr, n); return 0; } Output: Sorted array : 0 1 2 2 4 5 8 Worst and Average Case Time Complexity: O(n2). Best Case Time Complexity: O(n). The best-case occurs when the array is already sorted.Auxiliary Space: O(1) Please refer complete article on Cocktail Sort for more details! Comment More infoAdvertise with us Next Article C++ Program for Cocktail Sort K kartik Follow Improve Article Tags : Sorting C++ Programs DSA Practice Tags : Sorting Similar Reads C++ Program for Comb Sort Comb Sort is mainly an improvement over Bubble Sort. Bubble sort always compares adjacent values. So all inversions are removed one by one. Comb Sort improves on Bubble Sort by using gap of size more than 1. The gap starts with a large value and shrinks by a factor of 1.3 in every iteration until it 2 min read C++ Program for Bitonic Sort Bitonic Sequence A sequence is called Bitonic if it is first increasing, then decreasing. In other words, an array arr[0..n-i] is Bitonic if there exists an index i where 0<=i<=n-1 such that x0 <= x1 â¦..<= xi and xi >= xi+1â¦.. >= xn-1 A sequence, sorted in increasing order is consi 4 min read C++ Program for ShellSort In shellSort, we make the array h-sorted for a large value of h. We keep reducing the value of h until it becomes 1. An array is said to be h-sorted if all sublists of every h'th element is sorted. CPP // C++ implementation of Shell Sort #include <iostream> /* function to sort arr using shellS 2 min read C++ Program for Quick Sort Quick Sort is one of the most efficient sorting algorithms available to sort the given dataset. It is known for its efficiency in handling large datasets which made it a go-to choice for programmers looking to optimize their code.In C++, the STL's sort() function uses a mix of different sorting algo 4 min read C++ Program For Insertion Sort Insertion sort is a simple sorting algorithm that works by dividing the array into two parts, sorted and unsorted part. In each iteration, the first element from the unsorted subarray is taken and it is placed at its correct position in the sorted array. In this article, we will learn to write a C++ 3 min read Like