20170927_快排应用_荷兰国旗问题
荷兰国旗问题:
有一堆乱序小球,颜色分别是红色、白色、蓝色。请将它们按照红白蓝进行排序。
假设:红=0,白=1,蓝=2
//20170927_快排应用_荷兰国旗问题
/*
有一堆乱序小球,颜色分别是红色、白色、蓝色。请将它们按照红白蓝进行排序。
假设:红=0,白=1,蓝=2
*/
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<numeric>
#include<functional>
using namespace std;
void Partition(int r[], int begin, int end)
{
int current=begin;
int temp=0;
while(current<=end)
{
if(r[current]==0)
{
temp=r[current];
r[current]=r[begin];
r[begin]=temp;
++begin;
++current;
}
if(r[current]==1)
++current;
if(r[current]==2)
{
temp=r[current];
r[current]=r[end];
r[end]=temp;
--end;
}
}
}
int main(void)
{
int r[]={0,1,2,1,1,2,0,2,1,0};
Partition(r,0,9);
int i=0;
while(i<=9)
cout<<r[i++]<<",";
system("pause");
return 0;
}