使用API​​进行排序或算法?

时间:2016-11-18 07:00:28

标签: python algorithm api data-structures

在像Python这样的编程语言中哪种效率更高?如果我使用像合并排序这样的排序算法来排序数组,或者如果我使用像sort()这样的内置API对数组进行排序?如果算法独立于编程语言,那么算法优于内置方法或API的优势

2 个答案:

答案 0 :(得分:5)

为什么要使用公共API:

  • 内置的方法由经验丰富的许多程序员编写和审核,并投入了大量精力来优化它们,使其尽可能高效。
  • 由于内置方法是公共API,它也意味着它们经常被使用,这意味着你可以获得大量的免费"测试。您更有可能在公共API中发现问题,而不是在私有API中发现问题,一旦发现某些问题 - 它将为您修复。
  • 不要重新发明轮子。有人已经为你编程,使用它。如果您的探查器说有问题,请考虑更换它。不是之前。

为什么要使用自定义方法:

  • 也就是说,公共API是一般情况。如果你需要什么 非常具体的场景,你可能会找到一个解决方案 效率更高,但实际上需要花费一些时间 实现比已经优化的通用公共API更好。

tl; dr:使用公共API,除非您:

  1. 需要它并且可以花费大量时间来更换它。
  2. 知道你做得很好。
  3. 打算维护它并对其进行可靠的测试。

答案 1 :(得分:1)

库通常使用经过良好测试和正确优化的算法。例如,Python使用Timsort

  • 是一种稳定的排序(保持比较相等的元素的顺序)
  • 在最坏的情况下需要进行O(nlog⁡n)比较来排序n个元素的数组
  • 在最佳情况下(当输入已经排序时)以线性时间运行

除非您有特殊要求,否则会让您知道对于您的特定数据集,一种algorythm将提供最佳结果,您可以使用标准库实现。

手工建立一个分类的另一个原因显然是出于学术目的......