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;
}
本文介绍了一种针对由0、1、2三种颜色组成的数组进行原地排序的算法。该算法采用划分思想,每次划分确定一个元素的位置,最终实现整个数组的排序。代码简洁高效。
292

被折叠的 条评论
为什么被折叠?



