码迷,mamicode.com
首页 > Web开发 > 详细

荷兰国旗 Flag of the Kingdom of the Netherlands

时间:2016-04-05 13:58:03      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:

问题描述:现有n个红白蓝三种不同颜色的小球,乱序排列在一起,请通过两两交换任意两个球,使得从左至右的球依次为红球、白球、蓝球。这个问题之所以叫做荷兰国旗,是因为将红白蓝三色的小球弄成条状物,并有序排列后正好组成荷兰国旗。

技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享

                                技术分享

技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享

                          技术分享

解题方法1:蛮力求解

解题方法2:为了讨论方便用数字0表示红色球,用数字1表示白色球,用数字2表示蓝色球,所以最后的排序就是0...1...2...

快速排序基于划分过程,选取主元间整个数组划分为两个子数组。是否可以借鉴划分过程设定三个指针完成一次遍历完成重新排列,使得所有的球排列成三类不同颜色的球?

(1)设置三个指针: 一个前指针begin,一个中指针current,一个后指针。

current指针遍历整个数组序列

(2)当current指针所指元素为0时,与begin指针所指的元素进行交换(只是交换元素不交换指针位置),然后current++,begin++

(3)当current指针所指元素为1时,不做任何交换(即不移动球),然后current++

(4)当current指针所指元素为2时,与end指针所指的元素进行交换(同样直交换元素不交换指针位置),然后current指针位置不动,end--

 

技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享

待完成。。。

荷兰国旗 Flag of the Kingdom of the Netherlands

标签:

原文地址:http://www.cnblogs.com/zpfbuaa/p/5354638.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!