1、奇数放前,偶数放后
快排思想。分治法
</pre><pre name="code" class="cpp">void oddSort(vector<int> &res) {
int i = 0,j=res.size()-1;
while(i<j) {
if(i<j && res[i]%2!=0) ++i;
if(i<j && res[i]%2==0) --j;
if(i>=j)break;
swap(res[i],res[j]);
}
}
2、荷兰国旗问题,红色放前,白色放中,蓝色放后
void dragSort(vector<int> &res) {
int i=0,j=0,k=res.size()-1;
while(j<k) {
if(res[j]==0) {
swap(res[i],res[j]);
++i;
++j;
} else if(res[j]==1) ++j;
else {
swap(res[j],res[k]);
--k;
}
}
}
参考: https://github.com/bolpigo/The-Art-Of-Programming-By-July/blob/master/ebook/zh/02.07.md
或BBS:july