(一) Sort Colors
题目:一个无序数组仅仅含有0,1,2三种元素,要求按照0,1,2的顺序排列;
解答:调用两次快速选择的方法;
代码:
class Solution {
public void sortColors(int[] nums) {
quickSelect(nums, 0);
quickSelect(nums, 1);
}
private void quickSelect(int[] nums, int k) {
int left = 0;
int right = nums.length - 1;
while (left <= right) {
while (left < nums.length && nums[left] <= k) {
left++;
}
while (right >= 0 && nums[right] > k) {
right--;
}
if (left <= right) {
int temp = nums[right];
nums[right] = nums[left];
nums[left] = temp;
left++;
right--;
}
}
}
}