算法习题2.1.14 出列排序

博客详细介绍了出列排序的思路和过程,通过模拟扑克牌的排序问题,阐述了如何仅通过查看和交换最上面两张牌来实现排序。经过多次换牌操作,最终达到排序的目的,类似于冒泡排序的过程。
摘要由CSDN通过智能技术生成

题目:

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

思路:

将牌的大小以条形图的高低来表示,假设最开始牌是逆序的,简单起见假设牌只有5张,如下图所示。(为了表示清楚,将一摞牌画成了一列的形式)

因为只能查看和交换最上面的两张牌,那么可以在每次查看之后,将最上面的两张牌中较小的那张牌移到最上面,然后再将这张较小的牌放到这摞牌的最下面。(将此整个过程称为一次换牌操作)

假设这摞牌共有N张牌,那么,在这样经过N-1次的换牌操作之后,这摞牌中最大的那张牌将处于这摞牌的最上面的位置。再经过1次将这张最上面的牌放到这摞牌的最下面。

然后,再继续经过N-2次的换牌操作之后,最上面的那张牌是这摞牌的第二大的那张牌,第二张牌是最大的那张牌。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值