`
RednaxelaFX
  • 浏览: 3024552 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

几种排序算法的性能的统计图

阅读更多
好久没发点有趣的东西了,今天发个来看看。

上个星期raven给了我一组有趣的统计图。跟大家分享下吧~

下面是对几种排序算法的性能的统计图。
x轴是输入数组的大小,从1000到10000;y轴是消耗的时间,单位为ms。
每条统计线所代表的排序算法如底部的图例所示。

每张图代表一种输入类型的状况。
Sorted表示输入是已经排好序的(按照从小到大),
almost-sorted表示大约有20%的元素是不符合顺序的,
reverse表示顺序是颠倒的(按照从大到小排序),
random表示随机的输入。

看不到大图的请点击放大。









可以看到,有好几种排序算法在这个统一坐标上都看不出什么端倪(相对来说太快了……),
而selection sort则很稳定的呈现出平方级的增长。


把坐标轴重新设定一次,再看看状况如何:
(注释:
Shellsort-A采用的是Shell提出的数列,从floor(N/2)开始每次除以2;
Shellsort-B采用的是另一种数列,从floor(N/2)开始每次除以3。
Quicksort-A是采用输入数组在中间位置的元素为分隔点;
Quicksort-B是采用median-of-three为分隔点;
Quicksort-C是采用median-of-five为分隔点;
Quicksort-D是采用输入数组的实际中值为分隔点










raven同学或许过段时间会把题目和代码都放出来吧。这家伙最近也是忙。
更新:raven同学发帖了,http://ravenex.iteye.com/blog/175557。要看源代码的去那里看……

统计实验是在这样的配置上:
Pentium 4 HT 3.20GHz
1GB DDR
JRE 1.6.0 update 3
不知道为什么,无论怎么调节实验次数的参数,出来的结果都会很“抖”。
我在我的老笔记本上也跑过这个实验,就一点都不“抖”,但是比这里的图要慢多了。

P.S. 统计图是用JFreeChart画的。呼,这库我2年前用得快吐血了……源码开放,文档要卖钱,这算盘打得真是响当当的。
16
10
分享到:
评论
5 楼 RednaxelaFX 2008-03-24  
OK,raven同学发了帖了,在这里:http://ravenex.iteye.com/blog/175557
要看题目和源代码的去那里看嗯
4 楼 RednaxelaFX 2008-03-22  
我这边现在也没有完整的source,在raven同学那边。过一两天吧。等他发了我这边也加个链接过去。
3 楼 peterwillcn 2008-03-22  
提供下源码。。学习。。。谢谢   支持 java 的开源..
2 楼 BEA 2008-03-21  
我一直在学习这个,真的挺好的!
1 楼 lwwin 2008-03-20  
下載了看……
其實很希望有真實的數據,想知道是怎樣統計的數據呢?
這很有趣=3=

相关推荐

    一个程序员,一生必须掌握的几种算法.doc

    本文将介绍三种必抓算法:排序算法、搜索算法和图算法,并对其定义、特点和应用场景进行详细介绍。 一、排序算法 排序算法是一种能够将一组数据按照特定顺序进行排列的算法。常见的排序算法包括冒泡排序、选择排序...

    算法引论:一种创造性方法.[美]Udi Manber(带详细书签).pdf

    6.2 二叉搜索的几种形式 6.2.1 纯二叉搜索 6.2.2 循环序列的二叉搜索 6.2.3 二叉搜索特殊下标 6.2.4 二叉搜索长度未知的序列 6.2.5 重叠子序列问题 6.2.6 解方程 6.3 内插搜索 6.4 排序 6.4.1 桶排序和...

    算法导论(part2)

    8.1 排序算法时间的下界 8.2 计数排序 8.3 基数排序 8.4 桶排序 第9章 中位数和顺序统计学 9.1 最小值和最大值 9.2 以期望线性时间做选择 9.3 最坏情况线性时间的选择 第三部分 数据结构 引言 第10...

    Algorithms:资料库课程及其实现(在Python中),并介绍了几种计算,数学和统计算法

    存储库课程,包括实现(在Python中)和几种计算,数学和统计算法的描述。 尽管它不打算一本正式的书,但我们还是尽量忠实于原始算法,只是在出于教学目的而必须使用变体的情况下,才添加这些变体。 什么是算法? ...

    去燥算法(多种)

    中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值...

    算法导论(part1)

    8.1 排序算法时间的下界 8.2 计数排序 8.3 基数排序 8.4 桶排序 第9章 中位数和顺序统计学 9.1 最小值和最大值 9.2 以期望线性时间做选择 9.3 最坏情况线性时间的选择 第三部分 数据结构 引言 第10...

    A*算法求解八数码问题_C#语言

    下图是解决随机生成的100中状态中,P(n)生成函数的生成节点与扩展节点统计图: 由上图可知,P(n)作为启发函数,平均生成节点数大约在1000左右,平均扩展节点数大约在600左右; 下图是解决随机生成的100中状态中,...

    论文研究-基于多阈值弱学习的Adaboost检测器.pdf

    在研究图像中值滤波及其快速算法的基础上,设计并实现了一种新的...算法分析与大量实验结果表明,该算法不仅大幅度提高了图像中值滤波速度,并且比其他几种快速算法更大程度地保留了图像的边缘、轮廓及纹理等各种信息。

    数据结构课设-用哈夫曼实现软件压缩.doc

    这四种排序算法都可以用于排序大规模数据,但是它们的时间复杂度和空间复杂度不同。例如,希尔排序的时间复杂度为O(n log n),快速排序的时间复杂度为O(n log n),堆排序的时间复杂度为O(n log n),二路归并排序的...

    家庭支出管理系统-c语言程序设计.doc

    2. 算法的选择:需要选择合适的算法来实现系统的功能,例如排序算法、统计算法等。 3. 用户界面的设计:需要设计一个友好的用户界面,方便用户输入和查看数据。 4. 错误处理:需要考虑到系统中的错误处理,例如输入...

    历届系统分析师考试数学知识点细分统计

    2000 15 合并排序排序算法的时间复杂度 1999 15 排序算法时间复杂度问题 2002 65 程序的时间复杂度 2003 62~63 排序比较次数及时间复杂度 1990 7 有限自动机 1990 8 排列组合问题,二元关系, 1991 13 Chomsky形式...

    学生考勤管理系统课程设计.docx

    4. 统计算法:负责统计某段时间内旷课学生姓名及旷课节数、统计某段时间内有学生旷课的课程及旷课人次。 本次课程设计的目的是设计一个学生考勤管理系统,使用 C++ 语言和面向对象程序设计方法。该系统的设计需要...

    IOI国家集训队论文集1999-2019

    龙 翀 -《解决空间规模问题的几种常用的存储结构》 骆 骥 -《数学模型的建立和选择》 施 遥 -《人工智能在围棋程序中的应用》 肖 洲 -《数据结构的在程序设计中的应用》 谢 婧 -《规模化问题的解题策略》 徐 串...

    二级C语言公共基础知识

    (31) 算法一般都可以用哪几种控制结构组合而成______。(D) A. 循环、分支、递归 B. 顺序、循环、嵌套 C. 循环、递归、选择 D. 顺序、选择、循环 (32) 数据的存储结构是指______。(B) A. 数据所占的存储空间量 B. ...

    计算机二级C语言考试题预测

    (54) 在下列几种排序方法中,要求内存量最大的是(D) 注:要牢记,书中没有提到。 A. 插入排序 B. 选择排序 C. 快速排序 D. 归并排序 (55) 在设计程序时,应采纳的原则之一是(A) 注:和设计风格有关 A. 程序结构应有...

    java自学之道

    3.3 快速排序算法 3.4选择排序算法 3.5直接插入算法 3.6希尔排序算法 3.7 二分查找算法 3.8 二叉树 3.9 图的实现 3.10 生产者消费者的实现 3.11 银行家算法 3.12 KMP算法 3.13 RSA的实现 第4章 IO流实例开发 4.1流...

    《MATLAB R2016a在电子信息工程中的仿真案例分析》源码

    20.1常用的几种联想学习规则 20.1.1内星学习规则 20.1.2外星学习规则 20.1.3科荷伦(Kohonen)学习规则 20.1.4阈值学习规则 20.2自组织竞争神经网络的结构 20.3自组织竞争神经网络的设计 20.3.1网络初始化 ...

Global site tag (gtag.js) - Google Analytics