题目:
出列排序。说说你会如何将一副扑克牌排序,限制条件是只能查看最上面的两张牌,交换最上面的两张牌,或是将最上面的一张牌放到这摞牌的最下面。
思路:
将牌的大小以条形图的高低来表示,假设最开始牌是逆序的,简单起见假设牌只有5张,如下图所示。(为了表示清楚,将一摞牌画成了一列的形式)
因为只能查看和交换最上面的两张牌,那么可以在每次查看之后,将最上面的两张牌中较小的那张牌移到最上面,然后再将这张较小的牌放到这摞牌的最下面。(将此整个过程称为一次换牌操作)
假设这摞牌共有N张牌,那么,在这样经过N-1次的换牌操作之后,这摞牌中最大的那张牌将处于这摞牌的最上面的位置。再经过1次将这张最上面的牌放到这摞牌的最下面。
然后,再继续经过N-2次的换牌操作之后,最上面的那张牌是这摞牌的第二大的那张牌,第二张牌是最大的那张牌。