码迷,mamicode.com
首页 > 编程语言 > 详细

【LeetCode】Sort Colors 数组排序

时间:2015-03-20 14:28:40      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:排序   数组   

题目:Sort color


<span style="font-size:18px;">/*LeetCode sort colors
题目:输入一个数组,包含0,1,2分别代表红白蓝三种颜色,要求按照0,1,2的顺序,将同类颜色的连续排列
思路:计数排序,是一个遍历两遍的方法:可以先统计每种的数量,之后直接将这一范围内的所有值都赋值为相应的数字即可
遍历一遍的话可以在遍历的同时分别与0和2比较,从头和尾一起交换,1的在中间不用做处理;
*
*/
package javaTrain;

public class Train13 {
	public void sortColors(int[] A) {
		int n = A.length;
		int red = 0,blue = n-1;
		
		for(int i=0;i < blue+1;){	//因为会从后向前推进所以以blue表示尾部,确保只用遍历一遍
			int temp = A[i];	
			if(temp == 0){ 
				A[i++] = A[red];	//因为red在前,所以交换时它指向的只能是0或1,所以交换后的位置可以向前移
				A[red++] = temp;
			}
			else if(temp == 2){ 
				A[i] = A[blue];		//而blue在后,它指向的之前并没有被比较过有可能有0,1,2所以交换的点不能向前移
				A[blue--] = temp;
			} 
		}
    }
}
</span>


【LeetCode】Sort Colors 数组排序

标签:排序   数组   

原文地址:http://blog.csdn.net/ymzmdx/article/details/44490399

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!