荷兰国旗问题
来源:互联网 发布:客户年龄分层数据分析 编辑:程序博客网 时间:2024/06/11 11:41
问题:把 3种颜色(0,1,2)在一个数组里,每次只可交换一次,扫描一边后,三种颜色自然分开,应为颜色为:红,白,蓝,(荷兰国旗的颜色)所也叫荷兰国旗问题!
代码:
#include <stdlib.h>
#include <iostream.h>
int main()
{
int a[10];
for( int i=0 ; i<10 ; i++ )
{
a[i] = rand() % 3;
cout<<a[i]<<' ';
}
cout<<endl;
int first = 0;
int end = 9;
int mem = 0;
while( first <= end )
{
if( a[first] == 0 )
{
int temp = a[first];
a[first] = a[mem];
a[mem] = temp;
mem++;
first++;
}
else if( a[first] == 1 )
{
first++;
}
else if( a[first] == 2 )
{
int temp = a[first];
a[first] = a[end];
a[end] = temp;
end--;
}
}
return 0;
}
#include <iostream.h>
int main()
{
int a[10];
for( int i=0 ; i<10 ; i++ )
{
a[i] = rand() % 3;
cout<<a[i]<<' ';
}
cout<<endl;
int first = 0;
int end = 9;
int mem = 0;
while( first <= end )
{
if( a[first] == 0 )
{
int temp = a[first];
a[first] = a[mem];
a[mem] = temp;
mem++;
first++;
}
else if( a[first] == 1 )
{
first++;
}
else if( a[first] == 2 )
{
int temp = a[first];
a[first] = a[end];
a[end] = temp;
end--;
}
}
return 0;
}
PS:这个解决办法是O(n)的!
- 荷兰国旗问题
- 荷兰国旗问题
- 荷兰国旗问题
- 荷兰国旗问题
- 荷兰国旗问题
- 荷兰国旗问题
- 荷兰国旗问题
- 荷兰国旗问题
- 荷兰国旗问题
- 荷兰国旗问题
- 荷兰国旗问题
- 荷兰国旗问题
- 荷兰国旗问题
- NYOJ_268荷兰国旗问题
- 荷兰国旗问题
- 荷兰国旗问题
- 268 荷兰国旗问题
- 荷兰国旗问题
- vml cube
- 软件测试原则
- 游戏手机评测之摩托罗拉E398
- phprpc _很好很好用的_flex与后台数据库通信的桥梁
- 用Java反射API为POJO设值
- 荷兰国旗问题
- 又中毒了!
- 留点足迹吧!
- 回了几篇贴子,有点感触
- js脚本代码日常使用大全
- 域名注册
- Java实现任意文件在bmp中的隐藏与导出
- 李丽云为什么选择肖志军?
- CDMA模块常用AT命令如下