代码改变世界

随笔档案-2012年4月16日

趣题一则:交替放置的碟子

2012-04-16 21:43 by Anders Cui, 3008 阅读, 收藏, 编辑
摘要: 有数量为2n的一排碟子,n黑n白交替放置。现在要把黑碟子都放在右边,白碟子都放在左边,但只允许通过交换相邻碟子的位置来实现。实现这个过程要交换多少次?分析首先把问题转化一下,用1表示黑碟子,0表示白碟子,那么目前的顺序是:1010...1010结果要求1都放在右边,0都放在左边。这个题目看起来很眼熟。看关键字:交换相邻的碟子,排好顺序。嗯,就是经常出现在面试中的冒泡排序了。为便于观察,假设目前有6个碟子:101010。使用冒泡排序,第一次迭代,碟子序列变为:010101,交换3次。在进行第二次迭代之前,观察一下。现在,不仅第一个碟子就位,最后一个也是了,因此第二次迭代只需要对第2到第5个进行排 阅读全文
点击右上角即可分享
微信分享提示