回复 9楼 pangding
嗯。 你写的我懂了。思想一样,我用的是递归。你是迭代。这就是唯一的区别了。呵呵。
没仔细看你的代码,不过我还真是很少看见把堆排写成递归的呢。
你第二波数据没测第一种快排,是不是因为慢得太多?快排的缺点就是怕恶化。但是数据是否会恶化提前又不知道。STL 的库函数 sort(),用的就是三点快排。而且当快排递归深度达到一定的域值之后,就会换用其它排法排序。就是怕恶化过度。
你用递减的数列去测,或者拿峰谷状数据去做做测试(就是数据是由小变大再由大变小,或者是相反),没准结果又不一样了。
快排恶化后会变得很糟,而堆排就不那么敏感。从你的测试结果也能看出这点。