java排序

Java排序算法:概述


        排序是程序开发中一种非常常见的操作,对一组任意的数据元素(或记录)经过排序操作后,可以把它们变成一组按关键字排序的有序队列。有序的数据可以提高搜索和归并的效率,而且在之前的学习中发现有些算法需要在有序列表,数组等情况下才能使用,因此,给出未排序的数据集合,将这些数据用某种算法按某种方式重新排列,这就是排序。


对一个排序算法来说,一般从下面3个方面来衡量算法的优劣:

  1. 时间复杂度:主要分析关键字的比较次数和记录的移动次数。

  2. 空间复杂度:分析排序算法中需要多少辅助内存或者是磁盘。

  3. 稳定性:若两个记录A和B的关键字值相等,但是排序后A,B的先后次序保持不变,则称这种排序算法是稳定的;反之,就是不稳定的。

        就现有的排序算法来看,排序大致可分为内部排序和外部排序。

        内部排序:如果整个排序过程不需要借助外部存储器(如磁盘等),所有排序操作都是在内存中完成,这种排序就被称为内部排序。

       外部排序:如果参与排序的数据元素非常多,数据量非常大,计算无法把整个排序过程放在内存中完成,必须借助于外部存储器(如磁盘),这种排序就被称为外部排序。

       在完成“学工管理系统”设计阶段时,考虑到高校学生与教师人数比较多,而且大量导入数据时需提前完成排序再存入数据库,那么就可能会用到外部排序。主要运用到内存与磁盘的交换存储与分批排序问题。

        外部排序最常用算法是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分,分别把每一部分调入内存完成排序,接下来再对多个有序的子文件进行归并排序。

就常用的内部排序算法来说,可以分为以下几类:

  • 选择排序(直接选择排序,堆排序)

  • 交换排序(冒泡排序,快速排序)

  • 插入排序(直接插入排序,折半插入排序,希尔排序)

  • 归并排序

  • 桶式排序

  • 基数排序


你可能感兴趣的:(java排序)