# C Program for Pancake sorting

• Last Updated : 10 Jun, 2022

Given an unsorted array, sort the given array. You are allowed to do only following operation on array.

`flip(arr, i): Reverse array from 0 to i `

## C

 `/* C program for Pancake Sorting */``#include ``#include ` `/* Reverses arr[0..i] */``void` `flip(``int` `arr[], ``int` `i)``{`` ``int` `temp, start = 0;`` ``while` `(start < i) {``  ``temp = arr[start];``  ``arr[start] = arr[i];``  ``arr[i] = temp;``  ``start++;``  ``i--;`` ``}``}` `/* Returns index of the maximum element in arr[0..n-1] */``int` `findMax(``int` `arr[], ``int` `n)``{`` ``int` `mi, i;`` ``for` `(mi = 0, i = 0; i < n; ++i)``  ``if` `(arr[i] > arr[mi])``   ``mi = i;`` ``return` `mi;``}` `// The main function that sorts given array using flip``// operations``int` `pancakeSort(``int``* arr, ``int` `n)``{`` ``// Start from the complete array and one by one reduce`` ``// current size by one`` ``for` `(``int` `curr_size = n; curr_size > 1; --curr_size) {``  ``// Find index of the maximum element in``  ``// arr[0..curr_size-1]``  ``int` `mi = findMax(arr, curr_size);` `  ``// Move the maximum element to end of current array``  ``// if it's not already at the end``  ``if` `(mi != curr_size - 1) {``   ``// To move at the end, first move maximum number``   ``// to beginning``   ``flip(arr, mi);` `   ``// Now move the maximum number to end by reversing``   ``// current array``   ``flip(arr, curr_size - 1);``  ``}`` ``}``}` `/* A utility function to print an array of size n */``void` `printArray(``int` `arr[], ``int` `n)``{`` ``for` `(``int` `i = 0; i < n; ++i)``  ``printf``(``"%d "``, arr[i]);``}` `// Driver program to test above function``int` `main()``{`` ``int` `arr[] = { 23, 10, 20, 11, 12, 6, 7 };`` ``int` `n = ``sizeof``(arr) / ``sizeof``(arr);` ` ``pancakeSort(arr, n);` ` ``puts``(``"Sorted Array "``);`` ``printArray(arr, n);` ` ``return` `0;``}`

Output:

```Sorted Array
6 7 10 11 12 20 23```

Time Complexity: O(n2)
Auxiliary Space: O(1)

Please refer complete article on Pancake sorting for more details!

My Personal Notes arrow_drop_up