 
  Data Structure Data Structure
 Networking Networking
 RDBMS RDBMS
 Operating System Operating System
 Java Java
 MS Excel MS Excel
 iOS iOS
 HTML HTML
 CSS CSS
 Android Android
 Python Python
 C Programming C Programming
 C++ C++
 C# C#
 MongoDB MongoDB
 MySQL MySQL
 Javascript Javascript
 PHP PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
C Program for Pancake sorting?
This C Program Implements Pancake Sort on Array of Integers.
Pancake sorting is a variation of the sorting problem in which the only allowed operation is to reverse the elements of some prefix of the sequence.
Pancake sorting is the colloquial term for the mathematical problem of sorting a disordered stack of pancakes in order of size when a spatula can be inserted at any point in the stack and used to flip all pancakes above it. A pancake number is the minimum number of flips required for a given number of pancakes
Input:5,3,2,1,4 Output:1 2 3 4 5
Explanation
It is a variation of the sorting problem in which the only allowed operation is to reverse the elements of some prefix of the sequence. Unlike a traditional sorting algorithm, which attempts to sort with the fewest comparisons possible, the goal is to sort the sequence in as few reversals as possible. A variant of the problem is concerned with burnt pancakes, where each pancake has a burnt side and all pancakes must, in addition, end up with the burnt side on bottom.
Example
#include <iostream> using namespace std; void do_flip(int *, int, int); int pancake_sort(int *list, unsigned int length) {    if (length < 2)       return 0;    int i, a, max_num_pos, moves;    moves = 0;    for (i = length;i > 1;i--) {       max_num_pos = 0;       for (a = 0;a < i;a++){          if (list[a] > list[max_num_pos])             max_num_pos = a;       }       if (max_num_pos == i - 1)          continue;       if (max_num_pos){          moves++;          do_flip(list, length, max_num_pos + 1);       }       do_flip(list, length, i);    }    return moves; } void do_flip(int *list, int length, int num) {    int swap;    int i = 0;    for (i=0;i < --num;i++) {       swap = list[i];       list[i] = list[num];       list[num] = swap;    } } int main(int argc, char **argv) {    int arr[]={5,3,2,1,4};    int n=5;    int moves=pancake_sort(arr, n);    for (int i = 0;i < n;i++) {       printf("%d ", arr[i]);    }    printf(" - with a total of %d moves
", moves); }