首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当'n‘很小时,最好的排序算法是什么?

当'n‘很小时,最好的排序算法是什么?
EN

Stack Overflow用户
提问于 2022-06-27 21:25:57
回答 4查看 240关注 0票数 4

在我的程序的关键路径中,我需要对数组进行排序(特别是C++ std::vector,使用gnu c++标准libray)。我使用的是标准库提供的排序算法(std::sort),在本例中是内向排序。

我对这个算法的性能很好奇,在对不同标准和第三方库使用的各种排序算法进行研究时,几乎所有这些算法都关心“n”往往是主导因素的情况。

在我的具体情况下,'n‘将在2-20个元素的顺序上。所以常量因素实际上可以占主导地位。当我们正在排序的整个数组符合两个缓存行时,像缓存效果这样的事情可能会非常不同。

对于常量因子很可能压倒渐近因子的情况,最佳排序算法是什么?这些算法是否有经过审查的C++实现?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-06-27 22:46:35

Introsort考虑到了您的关注,并切换到短序列的插入排序实现。

由于您的STL已经提供了它,您可能应该使用它。

票数 4
EN

Stack Overflow用户

发布于 2022-06-27 21:29:27

插入排序或选择排序对于小型数组(即少于10-20个元素)来说通常都更快。

票数 2
EN

Stack Overflow用户

发布于 2022-06-28 12:32:48

观看https://www.youtube.com/watch?v=FJJTYQYB1JQ

简单的线性插入排序非常快。首先创建一个堆可以稍微改进它。

遗憾的是,这个话题并没有与<= 15元素的硬编码解决方案进行比较。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72778474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档