煎饼排序基本信息

煎饼排序是数量问题的口语术语,当刮刀可以插入堆叠中的任何点并用于翻转其上方的所有薄饼时,按照尺寸的顺序对无序堆叠的薄煎饼进行分类。煎饼数是给定数量的煎饼所需的最小翻转数。

与传统的排序算法不同,传统的排序算法试图以尽可能少的比较进行排序,目标是尽可能少地对序列进行排序。

这个想法是做类似于选择排序的事情。我们一个接一个地放置最后一个元素,并将当前数组的大小减少一个。

解剖问题:

  1. 需要从最小(顶部)到最大(底部)订购煎饼,起始堆可以按任何顺序排列。
  2. 我只能执行翻转翻转整个堆栈。
  3. 要将特定的煎饼翻转到堆栈的底部,我们首先必须将其翻转到顶部(然后再将其翻转到底部)。
  4. 要订购每个煎饼,需要一个翻转到顶部,一个翻转到最终位置。

直觉算法:

  1. 找到最大的乱序煎饼并将其翻转到底部(你可能需要先将其翻转到堆栈的顶部)。

  2. 重复步骤 1,直到订购堆栈。

  3. 就是这样,两步算法将起作用。

煎饼排序算法示例:

https://i.stack.imgur.com/SDjwT.gif

辅助空间: O(1)
时间复杂度: O(n^2)