`

排序相关

    博客分类:
  • java
阅读更多
排序的算法是我们最常用的算法,初学程序,每个人都尝试过排序。但只是局限于简单的排序。]如将下列数字进行排序
1,3,5,8,3,6
于是我们得出结果
1,3,3,5,6,8
将下列字母(字符)进行排序
a,i,e,f,w,s
于是我们得出结果
a,e,f,i,s,w
    但是我们实际遇到的情况就不是如此简单了。如给公司里的商品进行排序,我们很轻易的想到按照商品的名称排序不就完了,而且简单明了。但现实并如我们相信般简单。同一商品名称可以有不同的批次,进货时间,可能还会有单价的不同。显然只根据商品名称排序是不合理的。
    再举个简单例子。如公司要将员工进行排序(不要说领导排在前面),假设我们的需求比较复杂。先进行姓排序,谁的姓拼音靠前,谁就排前面。然后对名字进行排序。恩.如果同名,女性排前头。如果名字和性别都相同,年龄小的排前头。

    如果对java比较熟悉的会知道java.util.Comparator 接口。要实现里面的函数int compare(Object o1, Object o2) 返回一个基本类型的整型,返回负数表示o1 小于o2,返回0 表示o1和o2相等,返回正数表示o1大于o2。

[java] view plaincopy

    // 待比较的用户类 
    public class User { 
        //首先年龄排序,如果年龄相同,则按名字排序 
        String name; 
        String age; 
     
        public User(String name, String age) { 
            this.name = name; 
            this.age = age; 
        } 
     
        public String getAge() { 
            return age; 
        } 
     
        public void setAge(String age) { 
            this.age = age; 
        } 
     
        public String getName() { 
            return name; 
        } 
     
        public void setName(String name) { 
            this.name = name; 
        } 
    } 

[java] view plaincopy

    //具体的比较类,实现Comparator接口 
    import java.util.Comparator; 
     
    public class ComparatorUser implements Comparator { 
     
        public int compare(Object arg0, Object arg1) { 
            User user0 = (User) arg0; 
            User user1 = (User) arg1; 
     
            // 首先比较年龄,如果年龄相同,则比较名字 
            int flag = user0.getAge().compareTo(user1.getAge()); 
            if (flag == 0) { 
                return user0.getName().compareTo(user1.getName()); 
            } else { 
                return flag; 
            } 
        } 
    } 

[java] view plaincopy

    import java.util.ArrayList; 
    import java.util.Collections; 
    import java.util.List; 
     
    //测试类 
    public class SortTest { 
     
        public static void main(String[] args) { 
            List<User> userlist = new ArrayList<User>(); 
            userlist.add(new User("dd", "4")); 
            userlist.add(new User("aa", "1")); 
            userlist.add(new User("ee", "5")); 
            userlist.add(new User("bb", "2")); 
            userlist.add(new User("ff", "5")); 
            userlist.add(new User("cc", "3")); 
            userlist.add(new User("gg", "6")); 
     
            ComparatorUser comparator = new ComparatorUser(); 
            Collections.sort(userlist, comparator); 
     
            for (int i = 0; i < userlist.size(); i++) { 
                User user_temp = (User) userlist.get(i); 
                System.out.println(user_temp.getAge() + "," + user_temp.getName()); 
            } 
        } 
    } 

输出结果:

   1, aa
   2, bb
   3, cc
   4, dd
   5, ee                    //注意:同样是5岁的人,则比较名字(ee,ff),然后排序
   5, ff
   6, gg
转自 http://blog.csdn.net/qimiguang/article/details/13510151

顺便提及一下Collections.sort(List<Integer>); 对于list类型的排序这种方法是不错的。
分享到:
评论

相关推荐

    排序相关题型梳理23333

    这里提到的"排序相关题型梳理23333"可能是一个关于排序算法的讨论或者一道编程题目集,重点关注的是C语言实现的几种排序算法。接下来,我们将深入探讨其中涉及到的排序算法。 首先,我们可以看到代码中出现了几种...

    常用的内部排序相关代码.rar

    "常用的内部排序相关代码.rar"这个压缩包文件显然包含了多种常见的内部排序算法的实现代码,这些算法通常用于对内存中的数据进行排序,而非外部存储器。这里我们将深入探讨内部排序的基本概念、常用算法以及它们的...

    java排序.txt

    - **文件标签**:虽然在标签中出现了文件扩展名的误写,但可以推测该文件主要关注的是Java排序相关的知识。 ### 二、Java排序算法介绍 #### 1. 直接插入排序(Direct Insertion Sort) - **定义**:直接插入排序...

    合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序的C语言实现

    "set.h"和"sort.h"可能是头文件,定义了相关的数据结构和函数原型,方便在其他源文件中进行引用。 了解和掌握这些排序算法对于提升编程技能和解决实际问题具有重要意义。在实际开发中,可以根据数据特性选择合适的...

    冒泡排序,选择排序,插入排序,希尔排序,堆排序,归并排序,快速排序源码实现

    以下是关于"冒泡排序,选择排序,插入排序,希尔排序,堆排序,归并排序,快速排序"这七种常见排序算法的源码实现及相关知识点的详细解释: 1. **冒泡排序**:冒泡排序是一种简单的排序算法,它重复地遍历待排序的...

    各种排序算法的实验(源代码+实验报告)

    3. **其他可能包含的排序算法**:除了快速排序和堆排序,这个资源可能还包含了其他的排序算法,如冒泡排序、插入排序、选择排序、归并排序、希尔排序、计数排序、桶排序、基数排序等。这些算法各有特点,适用于不同...

    冒泡排序小游戏

    至于“pic”文件,可能是包含与冒泡排序相关的图形或动画,用以辅助解释排序的过程,使用户更容易理解冒泡排序的工作方式。这些图像可能显示了数组在每一轮比较后的状态变化,直观地展示元素如何逐步达到正确的位置...

    ListCtrl控件排序类及演示程序

    CListCtrl是MFC提供的ListView控件的封装,而CListCtrlSort可能会添加排序相关的成员函数和属性。 演示程序则是一个实际应用的实例,它展示了如何在项目中使用这个排序类。这个程序可能包括以下部分: 1. **初始化...

    sql学习 组合索引与排序相关细节.sql

    sql学习 组合索引与排序相关细节.sql

    排序问题(选择法排序, 冒泡法排序, 合并法排序),VB6.0源代码编写

    - 特点:选择排序是一种不稳定的排序方法,它的交换次数与原始序列的顺序有关。时间复杂度为O(n²),空间复杂度为O(1)。 - VB6.0实现:通过两层循环,外层循环控制未排序部分,内层循环用于找到最小值并进行交换。...

    基于python的冒泡排序相关资料课程设计

    python冒泡排序冒泡排序是一种简单直观的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成...

    西南科技大学SWUST OJ 数据结构 查找排序相关题解 查找排序.zip

    数据结构与查找排序是计算机科学中的基础且关键的领域,它们在编程竞赛和在线判题系统(如SWUST OJ)中占据着重要的地位。西南科技大学的这些在线判题题目涵盖了多个查找和排序算法的应用,旨在帮助学生深入理解和...

    利用ajax即时排序 asp代码

    【描述】中的内容说明了该示例的主要流程:当用户对数据进行排序时,不是通过整个页面的刷新,而是通过AJAX技术只更新与排序相关的部分。ASP代码用于处理后端逻辑,包括接收排序请求、处理数据并返回更新后的结果。 ...

    选择排序,插入排序,冒泡排序

    为了进一步了解这三种排序算法,可以参考名为"SORT"的压缩包文件,其中可能包含了相关的代码示例或解释材料。通过实际编写和运行这些代码,你可以更好地理解每种排序算法的运作方式,并加深对它们性能差异的理解。在...

    基于二叉树的位排序算法

    从给出的参考文献来看,作者们在研究位排序算法时,可能深入探讨了与位排序相关的不同数据结构和算法,如快速排序、直接插入排序、堆排序等,以及它们在不同应用场合下的表现和改进。 此外,提到的多线程机制下的位...

    PLSQL排序 中文版

    在这个“PLSQL排序 中文版”的资源包中,包含了多个与PLSQL排序相关的文件,如pag_sort_body.txt、pag_sort.txt、排序例程.txt等,它们可能是教程、代码示例或解释性文档,旨在帮助学习者理解和掌握PLSQL中的排序...

    table排序

    在提供的文件名“image”中,可能包含与排序相关的示例图片或图表,如排序过程的动画、代码实现截图等。这些视觉辅助可以加深对排序原理和步骤的理解。 总之,表格排序是IT工作中频繁使用的功能,涉及编程语言、...

    pb 点击标题排序 title order powerbuild9

    4. dbsort.pbw:这是一个PowerBuilder工作区文件,用于组织和管理多个工程,可能包含了与排序相关的多个项目。 在PowerBuilder中实现标题排序通常涉及以下步骤: 1. 设计DataWindow,确保包含需要排序的列。 2. 为...

    快速排序算法相关分析

    快速排序算法相关分析 快速排序算法是一种有效的排序算法,虽然算法在最坏的情况下运行时间为 O(n^2),但由于平均运行时间为 O(nlogn),并且在内存使用、程序实现复杂性上表现优秀,尤其是对快速排序算法进行随机化...

    文件排序DELPHI源码

    接下来,我们将深入探讨Delphi编程中的文件排序相关知识点。 1. **文件操作**:在Delphi中,文件操作是通过TFile或TFileStream类进行的。这些类提供了打开、关闭、读取和写入文件的方法。要对文件内容进行排序,...

Global site tag (gtag.js) - Google Analytics