Sorting SCHEME |本机排序函数复杂性

Sorting SCHEME |本机排序函数复杂性,sorting,scheme,runtime,time-complexity,racket,Sorting,Scheme,Runtime,Time Complexity,Racket,我四处寻找答案,但找不到任何答案,甚至在方案手册中也找不到,所以。。。 我想知道scheme(在基本包中)中实现的本机排序函数的运行时复杂性是多少。 我听说它是O(n logN)或者可能是O(n2),但没有证实它是100%真实的 我还想听听那里使用的排序算法是什么 谢谢 莱皮的答案基本上是一个完整的答案 简短回答:这取决于实现,但R6RS要求这种排序是稳定的,因此很可能是合并排序 你在用什么方案?莱皮的答案基本上是一个完整的答案 简短回答:这取决于实现,但R6RS要求这种排序是稳定的,因此很可能

我四处寻找答案,但找不到任何答案,甚至在方案手册中也找不到,所以。。。 我想知道scheme(在基本包中)中实现的本机排序函数的运行时复杂性是多少。 我听说它是O(n logN)或者可能是O(n2),但没有证实它是100%真实的

我还想听听那里使用的排序算法是什么


谢谢

莱皮的答案基本上是一个完整的答案

简短回答:这取决于实现,但R6RS要求这种排序是稳定的,因此很可能是合并排序


你在用什么方案?

莱皮的答案基本上是一个完整的答案

简短回答:这取决于实现,但R6RS要求这种排序是稳定的,因此很可能是合并排序

您使用的是什么方案?

GNU MIT方案 GNU麻省理工学院计划:

  • 合并排序
  • 快速排序
正确实现的每个都将在O(n log n)时间内运行。这是任何比较排序算法的最佳时间。
排序
过程是
合并排序
的别名。同样,它的可变对应项
sort
是可变
合并排序的别名

那么为什么要使用
快速排序
快速排序
的优点是,当允许变异时,可以在适当的位置进行排序<代码>快速排序可以实现为不需要为输入向量分配的内存以外的任何额外内存:它可以实现为只需要n个空间,而不是O(n)个空间。这在今天的台式计算机上并不是什么大问题,但在资源有限的情况下很重要

C.A.霍尔在描述快速排序

球拍 根据Cezary Juszczak的《朗格球拍》使用的是一个“,”。

GNU麻省理工学院方案 GNU麻省理工学院计划:

  • 合并排序
  • 快速排序
正确实现的每个都将在O(n log n)时间内运行。这是任何比较排序算法的最佳时间。
排序
过程是
合并排序
的别名。同样,它的可变对应项
sort
是可变
合并排序的别名

那么为什么要使用
快速排序
快速排序
的优点是,当允许变异时,可以在适当的位置进行排序<代码>快速排序可以实现为不需要为输入向量分配的内存以外的任何额外内存:它可以实现为只需要n个空间,而不是O(n)个空间。这在今天的台式计算机上并不是什么大问题,但在资源有限的情况下很重要

C.A.霍尔在描述快速排序

球拍
根据Cezary Juszczak的《lang racket》
使用了一个“”。

列表排序
通常作为合并排序实现,因为它需要按照规范(R6RS)的要求保持稳定。这是
O(nlogn)
列表排序
通常作为合并排序实现,因为它需要按照规范(R6RS)的要求保持稳定。这是
O(nlogn)
。标签上提到了球拍,但我怀疑它会有什么不同。Thx伙计们!我用的是标准的球拍,标签上提到了球拍,但我怀疑它会有什么不同。Thx伙计们!Im使用标准RacketQuicksort(小心实现)也比合并排序需要更少的预期比较。@dfeuer MergeSort的最坏情况时间复杂度为O(n log n)。快速排序的最坏情况的时间复杂度为O(n^2)。从统计学上讲,快速排序将通过随机化枢轴选择在平均情况O(n log n)下工作,并且在一定大小n以上,psuedo随机数生成的开销和最坏情况性能的极小可能性显然是值得的。但是让程序员选择权衡的理由当然不是不合理的。我完全同意提供多种选择是好的,而且在不同的情况下不同的选择更好。我的观点是,能够就地排序并不是快速排序的唯一(甚至主要)优势。就地heapsort也很常见(有些实现非常有效),而且(不太实用)也存在就地合并排序。堆排序和(我认为尤其是)合并排序也可以很好地处理并行性和缓存层次结构。真正随机的快速排序实际上击败了所有已知的确定性算法的地方在于最坏情况下的预期比较计数(即,最坏情况输入的预期比较计数)。快速排序(小心实施)还需要比合并排序更少的预期比较。@dfeuer MergeSort的最坏情况时间复杂度为O(n logn)。快速排序的最坏情况的时间复杂度为O(n^2)。统计上,QuickSort将在平均情况下工作(n log n),通过随机枢轴选择,并且大于一定大小的PSEDO随机数生成开销,以及最坏情况性能的微小可能性显然值得。但是让程序员选择权衡的理由当然不是不合理的。我完全同意提供多种选择是好的,而且在不同的情况下不同的选择更好。我的观点是,能够就地排序并不是快速排序的唯一(甚至主要)优势。就地heapsort也很常见(有些实现非常有效),而且(不太实用)也存在就地合并排序。堆排序和(我认为尤其是)合并排序也可以很好地处理并行性和缓存层次结构。真正随机的快速排序实际上比所有已知的确定性算法都要好的是最坏情况下的预期比较计数(即,最坏情况输入的预期比较计数)。