预分类分析算法?

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

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

解决方法

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

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

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

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

相关文章

 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都...
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上...
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c+&#x...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和ED...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的...