将乱序的红白蓝三色小球排列成同颜色在一起的小球组(按照红白蓝排序),这个问题称为荷兰国旗问题。这是因为我们可以将红白蓝三色小球想象成条状物,有序排列后正好组成荷兰国旗。我们用0表示红球,2为篮球,1为白球。 解答:这个问题典型地利用快排中partition过程。不过,要用三个指针,一前begi...
分类:
其他好文 时间:
2015-09-04 07:21:04
阅读次数:
232
荷兰国旗问题
时间限制:3000 ms | 内存限制:65535 KB
难度:1
描述
荷兰国旗有三横条块构成,自上到下的三条块颜色依次为红、白、蓝。现有若干由红、白、蓝三种颜色的条块序列,要将它们重新排列使所有相同颜色的条块在一起。本问题要求将所有红色的条块放最左边、所有白色的条块放中间、所有蓝色的条块放最右边。
输入
第1行是一个正整数n(n
输...
分类:
其他好文 时间:
2015-06-30 18:24:15
阅读次数:
159
问题描述:
给一个数组,并且数组里面元素的值只可能是0,1,2,然后现在把这个数组排序。
另外一种表述: 现有n个红白蓝三种不同颜色的小球,乱序排列在一起,请通过两两交换任意两个球,使得从左至右,依次是一些红球、一些白球、一些蓝球。
解题思路:
采用快速排序partition的思想,用两个指针将三种颜色间隔开。
下面引用此处内容 July 编程艺术系列中荷兰国旗问题。
一个...
分类:
编程语言 时间:
2015-06-08 09:45:17
阅读次数:
213
一、序言 在使用partition-exchange排序算法时,如快速排序算法(即使选择了一个好的关键元素pivot values),我们往往面临一个很尴尬的境地--当排序对象中有很多重复的元素,partition-exchange排序算法表现很不尽如人意。当所有元素都相等时,这就特别容易理解了。....
分类:
编程语言 时间:
2015-05-31 06:41:29
阅读次数:
172
描述
荷兰国旗有三横条块构成,自上到下的三条块颜色依次为红、白、蓝。现有若干由红、白、蓝三种颜色的条块序列,要将它们重新排列使所有相同颜色的条块在一起。本问题要求将所有红色的条块放最左边、所有白色的条块放中间、所有蓝色的条块放最右边。
输入第1行是一个正整数n(n
输出对输入中每行上由R,W,B三种字符构成的字符串序列,将它们重新排列使所有相同颜色的条块在一起,满足前述...
分类:
其他好文 时间:
2015-05-27 12:25:04
阅读次数:
198
何谓荷兰国旗:现有红、白、蓝三个不同颜色的小球,乱序排列在一起,请重新排列这些小球,使得红白蓝三色的同颜色的球在一起。这个问题之所以叫荷兰国旗,是因为我们可以将红白蓝三色小球想象成条状物,有序排列后正好组成荷兰国旗。问题转换为:给定数组A[0…N-1],元素只能取0、1、2三个值,设计算法,使得数组...
分类:
其他好文 时间:
2015-04-18 11:29:40
阅读次数:
114
【问题】
现有红白蓝三个不同颜色的小球,乱序排列在一起,请重新排列这些小球,使得红白蓝三色的同颜色的球在一起。这个问题之所以叫荷兰国旗问题,是因为我们可以将红白蓝三色小球想象成条状物,有序排列后正好组成荷兰国旗。
【分析】
这个问题我们可以将这个问题视为一个数组排序问题。红白蓝分别对应数字0、1、2。红、白、蓝三色小球数量并不一定相同。
【思路一】
First, iterate th...
分类:
编程语言 时间:
2015-02-04 18:39:33
阅读次数:
241
描述
荷兰国旗有三横条块构成,自上到下的三条块颜色依次为红、白、蓝。现有若干由红、白、蓝三种颜色的条块序列,要将它们重新排列使所有相同颜色的条块在一起。本问题要求将所有红色的条块放最左边、所有白色的条块放中间、所有蓝色的条块放最右边。
输入第1行是一个正整数n(n
输出对输入中每行上由R,W,B三种字符构成的字符串序列,将它们重新排列使所有相同颜色的条块在一起,满足前述...
分类:
其他好文 时间:
2015-01-03 09:29:36
阅读次数:
277
荷兰国旗问题
时间限制:3000 ms | 内存限制:65535 KB
难度:1
描述
荷兰国旗有三横条块构成,自上到下的三条块颜色依次为红、白、蓝。现有若干由红、白、蓝三种颜色的条块序列,要将它们重新排列使所有相同颜色的条块在一起。本问题要求将所有红色的条块放最左边、所有白色的条块放中间、所有蓝色的条块放最右边。
输入第1行是一个正整数n(n
输出对...
分类:
其他好文 时间:
2014-12-06 08:53:54
阅读次数:
254
描述荷兰国旗有三横条块构成,自上到下的三条块颜色依次为红、白、蓝。现有若干由红、白、蓝三种颜色的条块序列,要将它们重新排列使所有相同颜色的条块在一起。本问题要求将所有红色的条块放最左边、所有白色的条块放中间、所有蓝色的条块放最右边。输入第1行是一个正整数n(n<100),表示有n组测试数据。接下来有...
分类:
其他好文 时间:
2014-11-30 15:22:13
阅读次数:
265