荷兰国旗问题
题目一
解题思路
给定一个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相遇。
代码实现