黑马程序员技术交流社区

标题: 关于在集合中使用各种排序的技巧讨论 [打印本页]

作者: yinbolove576    时间: 2013-4-15 09:33
标题: 关于在集合中使用各种排序的技巧讨论
本帖最后由 yinbolove576 于 2013-4-16 13:37 编辑

/**
* 9、写一个集合,集合存放的是整形的数据。写一个帮助类,帮组类中有两个static方法,一个方法为从大到小的顺序排序,
*         一个方法为从小到大的顺序排序。实现上述的代码。
*/
import java.util.*;
public class Test9 {
        public static void main(String[] args)
        {
                //创建一个整型集合
                ArrayList<Integer> al = new ArrayList<Integer>();
                al.add(3);
                al.add(8);
                al.add(7);
                al.add(2);
                al.add(5);
                al.add(6);
               
                ArrayHelp.maxToMinSort(al);
                System.out.println("从大到小排序:"+al);
               
                ArrayHelp.minToMaxSort(al);
                System.out.println("从小到大排序:"+al);
        }
}

//定义一个帮助类
class ArrayHelp
{
        //定义从大到小排序方法
        public static void maxToMinSort(ArrayList<Integer> al)
        {
                //Collections.reverse(al);//直接利用reverse可将获取自然的元素进行反转
                //冒泡法
                for(int x=0; x<al.size(); x++)
                {
                        for(int y=x+1; y<al.size(); y++)
                        {
                                Integer a;//定义一个第三方整型变量a
                                if((al.get(x)).compareTo(al.get(y))<0)
                                {
                                        a = al.get(x);
                                        al.set(x,al.get(y));//将al.get(y)的值赋值给x
                                        al.set(y, a);//将a赋值给y
                                }
                        }
                }
        }
        
        public static void minToMaxSort(ArrayList<Integer> al)
        {
                //Collections.sort(al);
                for(int x=0; x<al.size(); x++)
                {
                        for(int y=x+1; y<al.size(); y++)
                        {
                                Integer a;
                                if((al.get(x)).compareTo(al.get(y))>0)
                                {
                                        a = al.get(x);
                                        al.set(x,al.get(y));
                                        al.set(y, a);
                                }
                        }
                }
        }
}


  楼主也是前几天刚做的这个基础测试,其中里面就有这么一个问题,当然楼主最先想到的肯定是直接利用API中封装好的关键字sort进行排序,但仔细看题后发现,如果单纯使用这种方法,从小到大、从大到小进行排序没问题,然而在主函数中将进行调用的函数体调换位置后发现,reverse所使用的方法排序有误,于是楼主又想到了细化排序方法,因此就直接想到了冒泡法,但一时不知道怎么在这里面直接调用,因此最后还是查阅了些资料才知道后来这种方法,因此小弟就想向大家探讨下这里除了用冒泡法、直接排序法等等的外,还有没有其余方法进行正常排序,欢迎大虾们踊跃交流思想哟~~~



作者: yinbolove576    时间: 2013-4-15 12:21
囧....
沙发都没人抢啊,难不成大伙儿的都忙着去看视频了?
作者: yinbolove576    时间: 2013-4-16 13:35
{:soso_e101:}悲催...只好关了...




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2