此类问题,类似快排中partition过程。只是需要用到三个指针,一前begin,一中current,一后end,俩俩交换。
- current遍历,整个数组序列,current指1 current++,
- current指0,与begin交换,而后current++,begin++,
- current指2,与end交换,而后,current不动,end--。
1)若遍历到的位置为0,则说明它一定属于前部,于是就和begin位置进行交换,然后current向前进,begin也向前进(表示前边的已经都排好了)。
2)若遍历到的位置为1,则说明它一定属于中部,根据总思路,中部的我们都不动,然后current向前进。
3)若遍历到的位置为2,则说明它一定属于后部,于是就和end位置进行交换