我们看到很多排序技术,如Merge,quick,Heap。你能帮我决定在哪种环境中使用哪种排序技术(如问题所示)?什么时候我们应该使用哪种排序算法?哪些不是(它们在时间和空间上的缺点)?
我期待以这种形式回答: a)我们会在...时使用Merge排序...我们绝对不应该使用Merge Sort ... b)我们会在......时使用快速排序。我们绝对不应该使用快速排序...
答案 0 :(得分:6)
有一些基本参数可以表征每种排序算法的行为:
所有这些都是widely documented for all commonly used sorts,这是您需要以所需格式提供答案所需的所有信息。然而,因为即使是每种类型的四个参数也会考虑许多事情 - 并非所有这些参数都是相关的 - 所以尝试给出这样一个“脚本化”答案并不是一个好主意。此外,还有更高级的概念可以考虑(例如在几乎排序或反向排序的数据上运行时的行为,缓存性能,对恶意构造的输入的抵抗),使得这样的答案更加冗长且容易出错
我建议您花一些时间熟悉上面提到的四个基本概念,可能是visualizing how each type of sort works关于简单输入和阅读有关排序算法的介绍性文本。这样做很快你就可以自己回答这些问题了。
答案 1 :(得分:1)
对于初学者,请查看维基百科上的这个comparison table,比较标准将为您提供有关算法查找内容及其可能权衡的线索。