Mas*_*ler 8 delphi sorting algorithm analysis
Quicksort是一个众所周知的问题,当数据集处于或几乎按排序顺序时,性能会大幅降低.在这种情况下,插入排序通常非常慢,很容易成为最佳选择.问题是知道何时使用哪个.
是否有可用于运行数据集的算法,应用比较因子,并返回有关数据集与排序顺序的接近程度的报告?我更喜欢Delphi/Pascal,但如果示例不是过于复杂,我可以阅读其他语言.
Ste*_*sop 10
正如你所期望的那样.三次中值技术意味着快速排序的最坏情况行为不会出现在排序数据中,而是出现在不太明显的情况下.
Introsort非常令人兴奋,因为它完全避免了quicksort的二次最坏情况.而不是你的自然问题,"我如何检测到数据几乎已经排序",它实际上是在问自己是否正在进行,"这需要花费太长时间吗?".如果答案是肯定的,它会从快速排序切换到高级排序.
Timsort将合并排序与插入排序相结合,并且对排序或反向排序的数据以及包含排序或反向排序子集的数据执行得非常好.
所以可能你的问题的答案是,"你不需要预通过分析,你需要一个自适应排序算法".
归档时间:
15 年,9 月 前
查看次数:
1677 次
最近记录: