https://leetcode.com/problems/sort-colors/description/
问题: 0,1,2组成的数组,在in-place的空间复杂度条件下进行排序
思路:利用划分的思想,以一个数字作为anchor,每划分一次,确定这个anchor的顺序。
void sortColors(vector<int>& nums) {
//划分的思想,每次划分可以将一个元素的顺序排好
int index = partition(nums, 0,0, nums.size()-1);
if(index < nums.size()){
partition(nums, 1, index, nums.size()-1);
}
}
int partition(vector<int>& nums, int value ,int l, int r){
while(l <= r){
while( l <= r && nums[l] == value ) l++;
while( l <=r && nums[r] > value) r--;
if(l < r){
int t = nums[l];
nums[l] = nums[r];
nums[r] = t;
}
}
return l;
}