还是不太理解排序
来源:3-3 案例:对宠物猫按名字进行排序
qq_ibertine_0
2020-07-13 17:51:30
[姓名:凡凡, 年龄:2, 品种:中华田园猫]
[姓名:毛毛, 年龄:8, 品种:英国短毛猫]
[姓名:花花, 年龄:5, 品种:英国短毛猫]
比如凡凡作为第一个参数传进去,毛毛第二个,升序,凡凡比毛毛小,凡凡是第一个,那接下来呢,花花是第几个参数穿进去,跟谁比较,之前问过这个问题,还是不太理解升降
2回答
同学你好,在进行排序时,如果两个数比较结果大于0,就把前一个数和后一个数交换,也就是把大的数放后面了,就是升序
比如上面的1,5,4,2要将他们升序排序,那么最终的结果应该是,1<2<4<5,5是最大的
所以只要在当5大于4的时候去交换它们的位置:
if(5 > 4 ) {
return 1; //如果5>4,那么返回的值>0, 5和4交换位置;大的数到了后面,实现了升序
}
所以返回值大于0实现升序,反之小于0实现降序
祝学习愉快
好帮手慕阿园
2020-07-13
同学你好,sort方法会为集合中每条数据进行两两排序比较,底层是利用递归进行冒泡排序的,如下例如现在有如下数组
int [] x = {1,5,4,2};
那么sort()方法的比较逻辑为:
第一轮: 1和5比,1和4比, 1和2比
第二轮: 5和4比, 5和2比
第三轮: 4和2比
最后实现大小的排序
同学现在不用太纠结sort底层是如何实现的,同学现在只要记住sort方法,传入集合和自定义的NameComparetor,他就会将集合中的内容进行两两比较,从而实现排序
祝学习愉快
相似问题