समस्या विवरण
यह C प्रोग्राम पूर्णांकों के ऐरे पर पैनकेक सॉर्ट लागू करता है।
पैनकेक सॉर्टिंग सॉर्टिंग समस्या का एक रूप है जिसमें एकमात्र अनुमत ऑपरेशन अनुक्रम के कुछ उपसर्ग के तत्वों को उलटना है।
उदाहरण
इनपुट: 5, 3, 2, 1, 4 आउटपुट: 1 2 3 4 5
C++ प्रोग्राम उदाहरण
#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(" - कुल %d चालों के साथ\n", moves);
}