题目
Sort Colors
Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue.
Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively.
Note:
You are not suppose to use the library’s sort function for this problem.
标签
Array、Two Pointers、Sort
难度
中等
分析
题目意思是给定一个数组,包含0,1,2三种数字,将数组从小到大排序。
解题思路是,遍历数组,将所有的0都放到左边,将所有的2都放到右边,剩下中间的就是1。
C代码实现
int i=0, zero=0, second=numsSize-1;
int temp=-1;
for(i=0; i<=second; i++)
{
while( (2 == nums[i]) && (i < second) )
{
temp = nums[i];
nums[i] = nums[second];
nums[second] = temp;
second--;
}
while( (0 == nums[i]) && (i > zero) )
{
temp = nums[i];
nums[i] = nums[zero];
nums[zero] = temp;
zero++;
}
}