Gates,W. and Papadimitriou,C. "Bounds for Sorting by Prefix Reversal." Discrete Mathematics.27,47-57,1979.
据说这是Bill Gates发表的唯一学术论文。
这个排序问题非常有意思,不同于Hanoi塔问题。首先我们要弄清楚骚操作在于:单手每次抓n块饼,全部颠倒。
例如
-----------1------------
------2------
----3----
翻转后:
----3----
------2------
-----------1------------
基本的排序方法都不太好用。先说一个最简单的解法,如果最底层的饼已经排序,那我们只需要处理n-1个烙饼。这样,我们再简化为n-2,n-3,递归直到最上面的两个饼排好序。这种排序的算法思路大概是这样:
首先,对于每一堆饼,我们找到它里面最大的一张饼,把这张最大的饼与上面的n个饼全部翻转,这样最大的饼就在最上面了,之后我们把整堆再做一次翻转,这样最大的饼也就到了最底部。如图所示(笔者字不好,多多包涵哈哈)
之后,我们就可以轻松的通过递归将整堆饼排序。
这么简单就可以把问题解决吗?用脚丫子想都不可能。
我们注意到一个问题,上面的方法中,首先经过两次翻转可以把最大的烙饼翻转到最下面。因此,最多需要把上面n-1张烙饼翻转2(n-1)次就可以全部排序。这未免太麻烦了点,我的意思是,假设这堆烙饼里存在已经排好序的序列,那岂不是多费工夫?
凭直觉来猜想,