【LeetCode】Sort Colors 数组排序

题目: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>


转载于:https://www.cnblogs.com/yfceshi/p/7249821.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值