dplyr包中arrange()函数采用的排序算法是什么?
dplyr::arrange() 背后的排序算法
arrange()本身不实现排序逻辑,它最终调用R基础包的order()函数生成排序索引,再用这些索引重排数据行。- R的
order()依赖底层的排序实现:- 从R 3.3.0版本起,默认用Timsort——这是一种融合归并排序与插入排序的混合算法,在实际数据场景下性能表现优异;
- 针对整数向量排序,会自动切换到基数排序(radix sort)来提速;
- R 3.3.0之前的版本,默认使用归并排序(merge sort)。
- 你提到的选择排序(selection sort)并不是R常用的排序算法,它时间复杂度高(O(n²)),仅适用于极小规模数据,R的基础排序实现早已不用这类低效算法。
内容的提问来源于stack exchange,提问作者Andre Faria
相关产品推荐
相关产品推荐

