为啥 R 使用基数排序?

Posted

技术标签:

【中文标题】为啥 R 使用基数排序?【英文标题】:Why does R use radix sort?为什么 R 使用基数排序? 【发布时间】:2017-10-24 22:21:12 【问题描述】:

据我了解,R 的order() 方法默认使用基数排序。情况并非总是如此(请参阅 news),但 Matt Dowle 提出了 this presentation 的建议,因为基数排序在经验上表现良好。

我的问题是,为什么在实践中基数排序比其他排序算法更好? Wikipedia doesn't make a strong case for radix sort。另外,如果它确实是最佳排序算法,为什么其他流行的语言/工具(如 Python 和 pandas)默认不使用基数排序?

【问题讨论】:

我真的不明白为什么这个问题被否决了。当然它的提法还有改进的余地,但它的核心并不浅。 【参考方案1】:

如您所知,一般情况下没有任何最佳排序算法。 一个解决方案可以是基数排序是一种稳定的排序。因此,由于在 R 中保持平局的顺序可能很重要,它们实现了一种稳定的排序方法。

您可以在here 和this post 中找到更多关于稳定性的信息。

另一点是,由于稳定​​性在不同情况下可能很重要,您应该在here 提供的稳定排序算法中找到最佳算法。

B

块排序 冒泡排序 桶排序

C

级联合并排序 鸡尾酒调酒器分类 计数排序 立方体排序

G

Gnome 排序

插入排序

L

库排序

M

归并排序

O

奇偶排序 振荡归并排序

P

鸽巢排序 Proxmap 排序

R

基数排序

T

Timsort

【讨论】:

以上是关于为啥 R 使用基数排序?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的基数排序 python 实现比快速排序慢?

为啥基数排序不能首先按最高有效数字进行桶排序[重复]

基数排序。为啥选择异或?

排序-基数排序

为啥我的分拣程序这么慢? (java中的基数/桶排序)

基数排序