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

描述:
对重量进行排序后,输出帽子颜色,如有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<mouse.length;i++)
{
for (int j=i+1;j<mouse.length;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<mouse.length;j++)
{
if(mouse[j].weight>mouse[j+1].weight)
{
flag=true;
temp=mouse[j+1];
mouse[j+1]=mouse[j];
mouse[j]=temp;
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值