搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 几种排序算法效率比较
标题:
几种排序算法效率比较
只看楼主
long0042
等 级:
论坛游民
帖 子:38
专家分:50
注 册:2008-3-5
第
11
楼
得分:0
回复 9楼 pangding
嗯。 你写的我懂了。思想一样,我用的是递归。你是迭代。这就是唯一的区别了。呵呵。
2012-07-26 09:51
pangding
来 自:北京
等 级:
贵宾
威 望:
94
帖 子:6784
专家分:16751
注 册:2008-12-20
第
12
楼
得分:0
没仔细看你的代码,不过我还真是很少看见把堆排写成递归的呢。
你第二波数据没测第一种快排,是不是因为慢得太多?快排的缺点就是怕恶化。但是数据是否会恶化提前又不知道。STL 的库函数 sort(),用的就是三点快排。而且当快排递归深度达到一定的域值之后,就会换用其它排法排序。就是怕恶化过度。
你用递减的数列去测,或者拿峰谷状数据去做做测试(就是数据是由小变大再由大变小,或者是相反),没准结果又不一样了。
快排恶化后会变得很糟,而堆排就不那么敏感。从你的测试结果也能看出这点。
2012-07-26 15:56
long0042
等 级:
论坛游民
帖 子:38
专家分:50
注 册:2008-3-5
第
13
楼
得分:0
回复 12楼 pangding
是这样的。第一种快速排序在遇到顺序的时候,可能和数据量有关系, 当数据量达到一定程度的时候程序会崩掉。怀疑是栈空间被耗尽了。
你后面提到的从大到小的数据排序,或者是峰谷的那种数据,也测试了一下。第二种快速排序可以适应。缺点就是你说的,它的速度和数据有关系,不够稳定。 堆排序确实是要稳定很多,基本上对于每种数据没有变化。这个估计就是堆排序中,第一步创建初始堆的时候起到的作用。不管是何种数据,他都会先整理为一定规律的数据,后面都是用那么多次运算。所以比较稳定。
2012-07-26 16:48
罗庇鹏ksq
来 自:太平洋
等 级:
职业侠客
帖 子:220
专家分:310
注 册:2012-6-30
第
14
楼
得分:0
效率也就是运行所花的时间吧,不如这样吧,加个#include<time.h>
clock_t start,finish;
double duration;
start=clock();//排序之前记录
……
//这里就是排序过程语句
……
finish=clock();//排序之后记录
duration=(double)(finish-start)/CLOCKS_PER_SEC;
printf( "%f seconds\n", duration ); //打印花费的时间
OK !!
从来都是无所谓,现在也该学着有所谓。✿咱们一个人,别坐井观天❀
2012-07-26 16:57
14
2/2页
1
2
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-373788-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.200350 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved