三路排序算法

算法思路:

 

leetcode75 sort colors

题意:把相同的颜色(用数字指代)按从小到大排序到一起。

解决代码:

时间复杂度:O(N)

空间复杂度:O(1)

class Solution {
public:
    void sortColors(vector<int>& nums) {
        int zero=-1,two=nums.size();
        
        for(int i=0;i<two;)
        {
            if(nums[i]==1)
                i++;
            else if(nums[i]==2)
                swap(nums[i],nums[--two]);
            else 
                swap(nums[++zero],nums[i++]);
        }
        
    }
};

  

posted @ 2019-10-09 20:28  codeg  阅读(256)  评论(0编辑  收藏  举报