2.1.14 - 出列顺序

    #Algorithms

    这个系列是 Algorithms 4th 的提高题、练习题和代码的一部分,当然,都是我的思考结果

    2.1.14 出列顺序

    题目

    说说你会如何将一副扑克牌排序,限制条件是只能查看最上面的两张牌,交换最上面的两张牌,或是将最上面的一张牌放到这摞牌的最下面。

    解答

    假设纸牌上标了数字 1 到 52

    1. 比较最上面两张牌,把较大的一张放到最下面去,直到比较完全部52张牌

    2. 此时数字 1 已经在最上面,将数字 1 放到最下面

    3. 在余下的 51 张牌里循环步骤 1,获得数字 2

    4. 此时数字 2 在最上面,数字 1 就在他的下面

    5. 交换两张牌的顺序,然后把数字 1 再次放到最下面,紧接着把数字 2 放到最下面

    6. 此时最下面两张牌分别是数字 1 和数字 2,而且数字 1 在数字 2 的上面

    重复该过程,洗牌完成