荷兰国旗问题

题目一

解题思路

给定一个num,一个指针x,初始指向-1位置,0~x之间的数都是小于等于num的。cur是当前数所在位置。

依次遍历数组,如果大于num,cur走到下一个数,如果小于等于num,将当前数与x的下一个位置上的数交换,x走到下一个位置,cur走到下一个位置。

······以此类推,直到遍历完所有的数。

 题目二(荷兰国旗问题)

解题思路

给定一个num,一个指针less,初始指向-1位置,0~x之间的数都是小于num的。一个指针more,初始指向N位置,more~N-1之间的数都是大于num的。cur代表当前数所在位置。

依次遍历数组,如果等于num,cur直接走到下一个数;如果小于num,将当前数与less的下一个位置上的数交换,less走到下一个位置,cur走到下一个位置;

如果大于num,将当前数与more的上一个位置上的数交换,more走到上一个位置,cur不动继续考察。

······以此类推,直到cur与more相遇。

 代码实现

https://github.com/superjishere/algorithm/blob/master/zuo/%E5%88%9D%E7%BA%A7/01/Code_08_NetherlandsFlag.java

原文地址:https://www.cnblogs.com/superjishere/p/12291292.html