对数组进行排序的两种方法

描述:
对重量进行排序后,输出帽子颜色,如有5只小白鼠,重量分别为15, 30, 5, 9 30, 帽子颜色依次为CL_RED, CL_BLUE, CL_BLUE, CL_YELLOW, CL_GRAY,
则排序后的输出的帽子颜色序列应该为CL_BLUE, CL_YELLOW, CL_RED, CL_BLUE, CL_GAR. 如果没有小白鼠,则输出null


分析:
对数组进行排序,常规的排序时用两个for循环,只是这样比较的次数固定,会比较多;另外一种优化的方法是加一个标志位看是否进行了位置改变,如果进行了改变,则在该次比较完成之后,还需要从头再次比较。这样的好处是如果本来就是排好序的,则直接一遍比完就结束了。


代码如下:
双重for循环进行排序:
Mouse temp = new Mouse();
for (int i=0;i {
for (int j=i+1;j {
if (mouse[i].weight > mouse[j].weight)
{
temp = mouse[i];
mouse[i] = mouse[j];
mouse[j] = temp;
}
}
}

加标志位用while和for双重循环进行排序:
boolean flag=true;
while(flag)
{
flag=false;
for(j=0;j+1 {
if(mouse[j].weight>mouse[j+1].weight)
{
flag=true;
temp=mouse[j+1];
mouse[j+1]=mouse[j];
mouse[j]=temp;
}
}
}

你可能感兴趣的:(算法,算法)