public class Solution {
public void SortColors(int[] nums)
{
FindAndSwap(nums, 0, 2);
FindAndSwap(nums, 0, 1);
FindAndSwap(nums, 1, 2);
}
public void FindAndSwap(int[] nums, int left, int right){
var i = 0;
var k = nums.Length - 1;
while(i < k){
while(nums[i] != right && i < k){
i++;
}
while(nums[k] != left && k > 0){
k--;
}
if(i < k){
var t = nums[i];
nums[i] = nums[k];
nums[k] = t;
}
}
}
}public class Solution {
public void SortColors(int[] nums)
{
var i = 0;
var k = nums.Length - 1;
var j = 0;
while(j <= k){
if(nums[j] == 1){
j++;
}
else if(nums[j] == 0){
var t = nums[i];
nums[i] = nums[j];
nums[j] = t;
j++;
i++;
}
else{
while(nums[k] == 2 && j < k){
k--;
}
var t = nums[j];
nums[j] = nums[k];
nums[k] = t;
k--;
}
}
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/lan_liang/article/details/48650121