Sorting algorithms/Pancake sort: Difference between revisions

m
Line 2,404:
[0, 1, 2, 3, 3, 8, 17, 36, 40, 72]</pre>
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<lang Mathematica>ClearAll[LMaxPosition[, a_Flip, n_ ] := Part[Position[a[[;;n]],Max[a[[;;n]]]],1,1pancakeSort]
If[LMaxPosition[aa_,n n_] <:= n,
 
With[{b = Take[a, n]}, First[Ordering[b, -1]]]
SetAttributes[Flip,HoldFirst]; Flip[a_] := Set[a,Reverse[a]]
SetAttributes[Flip, HoldAll];
 
pancakeSortFlip[a_] : = ForSet[na, = LengthReverse[a], n > 1, n--,]
pancakeSort[{6,in_] 7,:= 8Module[{n, 9lm, 2,a 5,= 3in}, 4, 1}]
If[LMaxPosition[a,n] < n,
For[n = Length[a], n > 1, n--,
Flip[a[[;; lm = LMaxPosition[a, n]]]]; Print[a];
Flip[a[[;;n]]]; Print[a];
If[lm < n,
];
Flip[a[[;; lm]]];
];</lang>
Print[a];
 
Flip[a[[;; n]]]; Print[a];
<pre>(* each major sort step is printed in example usage *)
Print[a];
pancakeSort[{6, 7, 8, 9, 2, 5, 3, 4, 1}]
];
 
]
{9,8,7,6,2,5,3,4,1}
]
pancakeSort[{6, 7, 8, 9, 2, 5, 3, 4, 1}]</lang>
{{out}}
<pre>{9,8,7,6,2,5,3,4,1}
{1,4,3,5,2,6,7,8,9}
{5,3,4,1,2,6,7,8,9}
1,111

edits