首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化Mergesort

优化Mergesort
EN

Stack Overflow用户
提问于 2012-09-25 20:35:19
回答 1查看 1.8K关注 0票数 1

合并排序是一种相当常见的排序算法,我已经编写了一种有效的合并排序算法.然后我想优化它。第一步是将它从递归转换为迭代,我就是这样做的。然后我看不出还有什么是可以优化的。在网上浏览了大量文章后,我得到了两种机制,一种是使用多重合并,另一种是使用平铺合并排序。然而,这些文档中没有一个提供了任何伪代码,甚至都不愿意解释如何做到这一点,以及它如何提供作者所说的优势,比如对缓存友好和本地性的改进。

有人能详细说明这件事吗?如果可能的话,可以提供一些伪代码吗?具体来说,我想知道如何使它对缓存友好。我完全不知道这些东西是什么,否则我会亲自尝试。

EN

回答 1

Stack Overflow用户

发布于 2015-08-26 18:03:20

您可以进行的一个常见且相对简单的优化是,当子数组大小低于某一阈值时,从mergesort切换到另一种算法,如插入排序。尽管mergesort在时间O(n log )中运行,但它谈论的是长期增长率,并没有说明该算法在小输入上的表现如何。例如,插入排序在较小的输入大小上运行得相当快,即使从长远来看更糟。因此,请考虑更改mergesort的基本情况,以便如果要排序的数组低于某个大小阈值(例如50-100),则使用插入排序,而不是继续递归。从经验上看,这可以显着提高算法的性能。

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

https://stackoverflow.com/questions/12590621

复制
相关文章

相似问题

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