利用冒泡排序的同步性证明一个有趣的性质

同步性的定义:

对两串不同的数字用同一算法进行排序时,如果该算法能够实现空间上的同步进行,就说这个算法具有同步性。

我们来说明一下冒泡排序的同步性:

在同一时间,冒泡排序算法在两串数字上的执行位置是一样的。

有趣的性质:

我们给出一个矩阵:

首先对每一列都进行排序:

然后在对每一行进行排序:

通过观察这个矩阵,我们发现,在对行的数字排序完后,列的数字的大小关系没有发生变化,下面我们就要来证明这个性质。

证明:

首先我们如果要证明这个性质,只需要证明两行满足这个性质就足够了,剩下的类比出来就行了。我们选定矩阵的前两行作为两个数字串,用冒泡排序对其横向进行排序,由于冒泡排序具有同步性,所以我们只对这两行(两个数字串)的一个局部进行观察,我们假设这个局部为:

首先确保了在纵向上是有序的,那么横向上总共有4种情况:

情况一和情况二:

这两种情况要么横向上都换,要么横向上都不换,很简单,一看就看出来,不需要证明

情况三:

此时只需要横向换下面的c和d就行了,为啥c和d换了之后在纵向上还是有序的呢?

通过b、d和c、d之间的关系我们可以得到c、b之间的关系如红箭头所示,通过a、b和b、d之间的关系我们可以得到a、d之间的关系如蓝箭头所示,则c、d交换后所得到的图如下所示:

在横向上数字交换后纵向上的数字还是有序的(a<d     b<c),证毕。

情况四:

证法和情况三一样,这里就不重复。

至此,我们将所有的情况都证完了,这个性质也被我们证出来了。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值