微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

预分类分析算法?

Quicksort是一个众所周知的问题,当数据集处于或几乎按排序顺序时,性能会大幅降低.在这种情况下,插入排序通常非常慢,很容易成为最佳选择.问题是知道何时使用哪个.

是否有可用于运行数据集的算法,应用比较因子,并返回有关数据集与排序顺序的接近程度的报告?我更喜欢Delphi / Pascal,但如果示例不是过于复杂,我可以阅读其他语言.

解决方法

正如你所期望的那样.三次中值技术意味着快速排序的最坏情况行为不会发生排序数据,而是针对不太明显的情况.

Introsort非常令人兴奋,因为它完全避免了quicksort的二次最坏情况.而不是你的自然问题,“我如何检测到数据几乎已经排序”,它实际上是在问自己是否正在进行,“这需要花费太长时间吗?”.如果答案是肯定的,它会从快速排序切换到排序.

Timsort将合并排序与插入排序相结合,并且对排序或反向排序的数据以及包含排序或反向排序的子集的数据执行得非常好.

所以可能你的问题的答案是,“你不需要预先通过分析,你需要一个自适应排序算法”.

原文地址:https://www.jb51.cc/delphi/102356.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐