当前位置:  编程技术>java/j2ee

Java常用排序算法及性能测试集合

    来源: 互联网  发布时间:2014-10-26

    本文导语:  现在再回过头理解,结合自己的体会, 选用最佳的方式描述这些算法,以方便理解它们的工作原理和程序设计技巧。本文适合做java面试准备的材料阅读。 先附上一个测试报告: Array length: 20000bubbleSort : 766 msbubbleSortAdvanced : 662 ...

现在再回过头理解,结合自己的体会, 选用最佳的方式描述这些算法,以方便理解它们的工作原理和程序设计技巧。本文适合做java面试准备的材料阅读。

先附上一个测试报告:

Array length: 20000
bubbleSort : 766 ms
bubbleSortAdvanced : 662 ms
bubbleSortAdvanced2 : 647 ms
selectSort : 252 ms
insertSort : 218 ms
insertSortAdvanced : 127 ms
insertSortAdvanced2 : 191 ms
binaryTreeSort : 3 ms
shellSort : 2 ms
shellSortAdvanced : 2 ms
shellSortAdvanced2 : 1 ms
mergeSort : 3 ms
quickSort : 1 ms
heapSort : 2 ms

通过测试,可以认为,冒泡排序完全有理由扔进垃圾桶。它存在的唯一理由可能是最好理解。希尔排序的高效性是我没有想到的;堆排序比较难理解和编写,要有宏观的思维。

代码如下:

package algorithm.sort;

import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Date;

/**
 * Java常用排序算法及性能测试集合
 *
 * 本程序集合涵盖常用排序算法的编写,并在注释中配合极其简单的特例讲解了各种算法的工作原理,以方便理解和吸收;
 * 程序编写过程中吸收了很多维基百科和别人blog上面的例子,并结合自己的思考,选择并改进一个最容易让人理解的写法
 *(尤其是快速排序,我觉得我写的算法最好理解)。
 * 同时包含一个集中式的性能测试和正确性测试方法,方便观测。
 * @author /link.php?url=http://blog.csdn.net/sunxing007
 * 转载请注明来自/link.php?url=http://blog.csdn.net/sunxing007
 */
public class SortUtil {
 // 被测试的方法集合
 static String[] methodNames = new String[]{
  "bubbleSort",
  "bubbleSortAdvanced",
  "bubbleSortAdvanced2",
  "selectSort",
  "insertSort",
  "insertSortAdvanced",
  "insertSortAdvanced2",
  "binaryTreeSort",
  "shellSort",
  "shellSortAdvanced",
  "shellSortAdvanced2",
  "mergeSort",
  "quickSort",
  "heapSort"
 };
    public static void main(String[] args) throws Exception{
     //correctnessTest();
     performanceTest(20000);
    }

    /**
     * 正确性测试

     * 简单地测试一下各个算法的正确性

     * 只是为了方便观测新添加的算法是否基本正确;

     * @throws Exception 主要是反射相关的Exception;

     */
    public static void correctnessTest() throws Exception{
     int len = 10;
     int[] a = new int[len];
     for(int i=0; i


    
 
 

您可能感兴趣的文章:

  • 使用java jdk中的LinkedHashMap实现简单的LRU算法
  • java分析html算法(java网页蜘蛛算法示例)
  • 哪里有 DES 算法的Java原码?
  • JAVA有用于数据校验的类吗?象加密算法那样的.
  • Java算法工具 NA_WorkSheet
  • 寻求java加密算法及实例
  • java异或加密算法
  • Java算法包 jga
  • 哪里有《数据结构与算法分析(JAVA版)》的电子书下载,谢了:)
  • 谁给一个树的算法(JAVA)给我?
  • 请问哪里有《数据结构与算法分析(JAVA版)》的电子书下载????
  • 那个大侠可以推荐一本关于java的数据结构和算法的书?  
  • 哪里有 MD5 算法的Java原码?
  • 有没有人用java编过加密算法???
  • 知不知道那里能找到RSA算法的JAVA实现?
  • 请问有没有LZSS加解压缩JAVA算法
  • 看过《数据结构与算法》(java版)谈谈一下感想?
  • 用java做一个“求集合子集的”算法。
  • JAVA 18位身份证号码校验码的算法
  • 在网络数据传输中,为了降低数据传输量,用哪种算法最好,有哪位大虾帮忙吗?最好有JAVA源代码
  • JAVA简单分组的算法实现
  • java map(HashMap TreeMap)用法:初始化,遍历和排序详解
  • Java中的数组排序方式(快速排序、冒泡排序、选择排序)
  • 深入Java冒泡排序与选择排序的区别详解
  • Java实现按中文首字母排序的具体实例
  • java排序去重示例分享
  • java冒泡排序算法代码
  • java数组排序示例分享
  • 请问在java中如何对中文字符进行排序呢?
  • java对double数组排序示例分享
  • java数组排序示例(冒泡排序、快速排序、希尔排序、选择排序)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Java有没有集合的概念
  • Java 实时集合框架 Javolution
  • Java集合工具包 lambdaj
  • java集合框架 hppc
  • Java集合框架 fastutil
  • Java集合类 GNU Trove
  • Java高性能集合类 ConcurrentLinkedHashMap
  • java去除集合中重复元素示例分享 java去除重复
  • java集合map取key使用示例 java遍历map
  • java实现高效的枚举元素集合示例
  • 删除JAVA集合中元素的实现代码
  • Java集合Set、List、Map的遍历方法
  • Java集合、数组和字符串整合API dollar
  • java 集合并发操作出现的异常ConcurrentModificationException
  • java集合求和最大值最小值示例分享
  • Java函数式编程(四):在集合中查找元素
  • 详解JAVA高质量代码之数组与集合
  • Java函数式编程(二):集合的使用
  • java集合框架的体系结构详细说明
  • java如何对map进行排序详解(map集合的使用)
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3