2016-11-18 79 views
1

在像Python这样的编程语言中哪个会有更好的效率?如果我使用排序算法像合并排序排序数组或如果我使用内置的API如sort()排序数组?如果算法是无关的编程语言,那么什么是算法的优势内置的方法或API的使用API​​进行排序或算法?

+0

“API或算法”是一个荒谬的问题,他们不是替代品。 API是图书馆面向公众的界面。算法是解决问题的分步说明。库使用API​​和算法。 'sort'实现了一种排序算法(称为“timsort”),并提供了一个用于调用它的API。 –

回答

5

为什么要使用公共API:

  • 内置的方法由经验非常丰富,其中被写入和审查编码器,并且投入了大量精力来优化它们以达到效率。
  • 由于内置方法是公共API,因此它也意味着它们不断被使用,这意味着您可以进行大规模的“免费”测试。你更有可能在公共API中发现问题,而不是在私人API中发现问题,一旦发现问题 - 它将为你解决。
  • 不要重新发明轮子。有人已经为你编程,使用它。如果您的配置文件说有问题,请考虑替换它。之前没有。

为什么使用定制方法:

  • 这就是说,公共API是一般情况。如果您需要针对您的方案特定的东西 ,您可能会发现一个解决方案将使效率更高,但实际上 会比已经优化的通用公共API要花费相当多的时间。

TL;博士:使用公共API,除非你:

  1. 需要它,并能够承受大量的时间来取代它。
  2. 知道你在做什么很好。
  3. 打算维护它,并对其进行强大的测试。
+0

这意味着如果我被要求在一些有竞争力的编程中对数组进行排序,我可能更喜欢API而不是算法? – Manel

+1

@Manel依赖于竞争规则。如果比赛的目的*是实施该算法,那么你可能不应该使用内建的方法。 ;) –

1

这些库通常使用经过良好测试和正确优化的algorythms。例如Python使用Timsort其中:

  • 是在最坏的情况下
  • 需要O(即比较等于被保留元素的顺序)一个稳定的排序(N日志⁡n)的比较来进行排序n个元素的数组
  • 在最好的情况下(当输入已经排序)中运行的线性时间

除非你有特殊的要求,让你知道,您的特定数据集一个排序algorythm会给你可以使用最好的结果标准库的实现。

另一个原因手工打造排序,显然是为学术目的...

相关问题