题意:对一个容量为n含有红色(用0表示),白色(用1表示),和蓝色(用2表示)的数组按升序排序。。。
public void sortColors(int[] A) {
if(A == null||A.length == 0)
return;
//计数排序;
int red=0;int white=0;int blue=0;
for(int i=0;i<A.length;i++)
{
if(A[i] == 0)
{ red++; }
else if(A[i] == 1)
{ white++; }
else
{ blue++; }
}
for(int i=0;i<A.length;i++)
{
if(red>0)
{
A[i]=0;
red--;}
else if(white>0)
{
A[i]=1;
white--;}
else
{
A[i]=2;
blue--; }
}
}
本文介绍了一种使用计数排序的方法来对包含红色(0)、白色(1)和蓝色(2)三种颜色标记的数组进行排序。通过遍历数组两次实现原地排序,第一次遍历用于统计每种颜色的数量,第二次遍历则根据数量重新排列元素。
92

被折叠的 条评论
为什么被折叠?



